Проверка UUID с помощью проверки Laravel


Проверка UUID с помощью проверки Laravel

11.10.2017 10:41:31 Просмотров 86 Источник

Существует ли встроенный способ проверки UUID с помощью правила проверки? Я ничего не нашел об этом в документации "доступные правила проверки".

У вопроса есть решение - Посмотреть?

Ответы - Проверка UUID с помощью проверки Laravel / Validate UUID with Laravel Validation

Является ответом!
wshurafa

11.10.2017 10:48:53

Вы можете расширить помощник валидатора в Laravel, чтобы добавить свои собственные правила проверки, например, я создал свое собственное правило проверки для проверки местоположения с помощью регулярных выражений следующим образом:

Validator::extend('location', function ($attribute, $value, $parameters, $validator) {
    return preg_match('/^-?\d{1,2}\.\d{6,}\s*,\s*-?\d{1,2}\.\d{6,}$/', $value);
});

Ссылка на этот пост: PHP preg_match UUID v4

Вы можете использовать регулярное выражение UUID для его создания следующим образом:

Validator::extend('uuid', function ($attribute, $value, $parameters, $validator) {
    return preg_match('/[a-f0-9]{8}\-[a-f0-9]{4}\-4[a-f0-9]{3}\-(8|9|a|b)[a-f0-9]{3‌​}\-[a-f0-9]{12}/', $value);
});

Надеюсь, что это соответствует вашей просьбе.

Bryse Meijer

07.05.2018 04:20:05

Laravel 5.6 теперь предоставляет пакет ramesey/uuid из коробки. Теперь вы можете использовать его метод "isValid" для проверки UUID. Я заметил, что регулярное выражение в приведенном выше решении иногда терпит неудачу. У меня еще не было никаких проблем с пакетом, используемым Laravel внутри компании.

Validator::extend('uuid', function ($attribute, $value, $parameters, $validator) {
    return \Ramsey\Uuid\Uuid::isValid($value);
});

Не имеет отношения к этому вопросу, но теперь вы также можете сгенерировать UUID, используя класс "Str" из Laravel. Именно по этой причине ramsey/uuid теперь включен по умолчанию, устраняя необходимость включать ваше собственное регулярное выражение.

\Illuminate\Support\Str::uuid();
Legionar

12.02.2019 06:12:21

На самом деле Laravel 5.7 поддерживает проверку UUID.

$validation = $this->validate($request, [
    'uuid_field' => 'uuid'
]);

На основании документации.

Juha Vehnia

21.03.2019 05:06:42

Проверка Laravel 5.7 UUID по какой-то причине не работает. По крайней мере, я получаю

InvalidArgumentException: validation.uuid.

Лучший способ исправить это-создать из него правило.

php artisan make:rule UUID

Вот мой класс правил для проверки UUID:

namespace App\Rules;

use Illuminate\Contracts\Validation\Rule;
use Ramsey\Uuid\Uuid as UuidValidator;

class UUID implements Rule
{
    /**
     * Validate UUID
     *
     * @param  string  $attribute
     * @param  mixed  $value
     * @return bool
     */
    public function passes($attribute, $value)
    {
        return UuidValidator::isValid($value);
    }

    /**
     * Get the validation error message.
     *
     * @return string
     */
    public function message()
    {
        return 'Supplied :attribute is not valid UUID!';
    }
}

Тогда вы можете использовать его вручную, как это

$validator = Validator::make($data->all(), ['uuid' => new UUID]);

if ($validator->fails()) {
     // Do whatever
}

Или используйте его с проверкой http-запроса, как это

namespace App\Http\Requests;

use App\Rules\UUID;
use Illuminate\Foundation\Http\FormRequest;

class UserRequest extends FormRequest
{
    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'uuid' => ['required', new UUID],
            'email' => ['required','email']
        ];
    }
}
Murilo Boareto Delefrate

19.08.2019 12:39:48

Для тех, кто испытывает проблемы с использованием метода проверки uuid в Laravel 5.7, я исправил это, обновив Laravel (это было 5.7.6, а затем после обновления 5.7.28), и это сработало!

Помочь в развитии проекта:
Закрыть X