在 laravel 上的数组上调用成员函数失败()

我只是想验证一些 POST 数据。


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


$data = ['url' => request('url')];

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


if($validation->fails())

{

    $dd('failed');

}

我不明白为什么它不起作用,你能帮我吗?


繁花如伊
浏览 94回答 2
2回答

斯蒂芬大帝

您收到的错误是由于->validate(). 这将返回一个array,因此$validation将是一个array而不是一个Validator实例,并且您不能调用->fails()一个array。要解决这个问题,只需省略->validate():$validation = Validator::make($data, ['url' => 'required|url']);if($validation->fails()){  dd("Failed");}边注; 注意你的语法。$dd()不是一个有效的调用。

一只名叫tom的猫

您可以直接使用对象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()同样,您可以通过调用方法进行默认重定向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
打开App,查看更多内容
随时随地看视频慕课网APP