Поэтому я следовал этому руководству, чтобы узнать, как загружать изображения с Laravel с помощью Vue: Загрузка и проверка изображений с использованием Laravel и VueJ

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

пытается получить доступ к атрибуту внутри несуществующего массива. Неопределенное смещение: 1

Я мог бы избежать ошибки, спросив

if (request('image'))

В контроллере и применение проверки для других полей только в том случае, если изображение не указано. Однако это становится невероятно запутанным.

Поэтому я ищу способ заставить настраиваемое правило проверки работать, если нет ввода. Или это неправильный путь?

Вот пользовательское правило проверки:

public function boot()
{
    Validator::extend('image64', function ($attribute, $value, $parameters, $validator) {
        $type = explode('/', explode(':', substr($value, 0, strpos($value, ';')))[1])[1];
        if (in_array($type, $parameters)) {
            return true;
        }
        return false;
    });

    Validator::replacer('image64', function($message, $attribute, $rule, $parameters) {
        return str_replace(':values',join(",",$parameters),$message);
    });
}
0
Hillcow 29 Июл 2017 в 02:03

2 ответа

В некоторых ситуациях вы можете захотеть выполнить проверки для поля, только если это поле присутствует во входном массиве. Чтобы быстро добиться этого, добавьте правило sometimes в свой список правил:

$v = Validator::make($data, [
    'email' => 'sometimes|required|email',
]);

В приведенном выше примере поле электронной почты будет проверено, только если оно присутствует в массиве $data.

Ссылка: Условное добавление правил

1
Zayn Ali 29 Июл 2017 в 03:28
Отличная идея. Однако я нашел это: laravel.com/docs/5.4/ validation # a-note-on-optional-fields Проблема в том, что это не работает. image имеет значение «null», но по-прежнему дает мне ошибку другого правила проверки.
 – 
Hillcow
29 Июл 2017 в 11:36

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

1
Hillcow 29 Июл 2017 в 11:45