为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
繁花如伊 2022-07-16 17:55:54
我只是想验证一些 POST 数据。Route::post('/', function(){$data = ['url' => request('url')];$validation = Validator::make($data, ['url' => 'required|url'])->validate();if($validation->fails()){    $dd('failed');}我不明白为什么它不起作用,你能帮我吗?
查看完整描述

2 回答

?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

您收到的错误是由于->validate(). 这将返回一个array,因此$validation将是一个array而不是一个Validator实例,并且您不能调用->fails()一个array。要解决这个问题,只需省略->validate():


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

if($validation->fails()){

  dd("Failed");

}

边注; 注意你的语法。$dd()不是一个有效的调用。


查看完整回答
反对 回复 2022-07-16
?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

您可以直接使用对象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


查看完整回答
反对 回复 2022-07-16
  • 2 回答
  • 0 关注
  • 93 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号