Вызов функции-члена fails () для массива laravel - PullRequest
0 голосов
/ 08 января 2020

Я просто пытаюсь проверить некоторые данные POST.

Route::post('/', function(){

$data = ['url' => request('url')];
$validation = Validator::make($data, ['url' => 'required|url'])->validate();

if($validation->fails())
{
    $dd('failed');
}

Я не понимаю, почему это не работает, не могли бы вы помочь мне, пожалуйста?

Ответы [ 2 ]

1 голос
/ 08 января 2020

Ошибка, которую вы получаете, связана с типом возврата ->validate(). Это вернет array, поэтому $validation будет array вместо Validator экземпляра, и вы не можете вызвать ->fails() на array. Чтобы решить эту проблему, просто опустите ->validate():

$validation = Validator::make($data, ['url' => 'required|url']);
if($validation->fails()){
  dd("Failed");
}

Sidenote; следите за своим синтаксисом. $dd() неверный вызов.

0 голосов
/ 08 января 2020

Вы можете использовать метод validate, предоставленный объектом Illuminate\Http\Request, как указано ниже

$request->validate([
    'title' => 'required|unique:posts|max:255',
    'author.name' => 'required',
    'author.description' => 'required',
]);
//if fails code after this line will not be executed

Эта проверка будет автоматически перенаправлена ​​обратно. Это проверка по умолчанию laravel. Если это не даст сбой, он продолжит выполнение.

Вручную

Теперь вы можете реализовать вручную и перенаправить как ваше требование.

use Validator;

    $validator = Validator::make($request->all(), [
                'title' => 'required|unique:posts|max:255',
                'body' => 'required',
            ]);

    //checks your validation and redirect as you want

    if ($validator->fails()) {
          return redirect('where/ever/you/want')
                         ->withErrors($validator)
                         ->withInput();
     }

Снова вы можете перенаправить по умолчанию, вызвав validate() method

Validator::make($request->all(), [
    'title' => 'required|unique:posts|max:255',
    'body' => 'required',
])->validate();

Если вы вызовете метод validate, он будет перенаправлен по умолчанию laravel.

dd () - это метод, сокращенная версия die and dump

Полезная ссылка:

https://github.com/laravel/framework/blob/5.7/src/Illuminate/Validation/Validator.php#L312

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...