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

Php 对laravel上的数组调用成员函数失败(),php,laravel,Php,Laravel,我只是想验证一些后期数据 Route::post('/', function(){ $data = ['url' => request('url')]; $validation = Validator::make($data, ['url' => 'required|url'])->validate(); if($validation->fails()) { $dd('failed'); } 我不明白它为什么不起作用,你能帮我一下吗?你得到的错误是由于返回类

我只是想验证一些后期数据

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

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

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

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

你得到的错误是由于返回类型->验证。这将返回一个数组,因此$validation将是一个数组而不是一个验证器实例,并且您不能在数组上调用->fails。要解决此问题,只需省略->验证:

旁注;注意语法$dd不是有效的调用。

您可以直接使用Illumb\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方法来默认重定向

若您调用validate方法,它将重定向为默认的laravel

dd是一种方法,是模具和转储的简短版本

有用链接:


它是“失败的”;。删除$。->validate返回一个数组。您不能调用{array}->fails,因为array没有该方法。我想您可以调用$validator=validator::make。。。;,然后,如果$validator->失败{…},谢谢您的回答。你能告诉我怎么做吗?我正在学习Laravel和PHP,它非常复杂,请阅读我的评论。我刚刚告诉过你你可以尝试什么。。。删除->验证。好的,tim lewis,谢谢。我如何才能感谢你我没有找到绿色标志->验证将返回一个数组,如果它没有失败;否则它会抛出exception@Md.Amirozzaman正当谢谢你的澄清。无论哪种方式,->validate->直接链接或通过变量赋值失败在任何情况下都是无效的:@Julien Rns Neo检查这个答案,验证器是如何工作的!使用前验证
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();
     }
Validator::make($request->all(), [
    'title' => 'required|unique:posts|max:255',
    'body' => 'required',
])->validate();