【问题标题】:Laravel validation returns nullLaravel 验证返回 null
【发布时间】:2018-01-26 20:44:31
【问题描述】:

正如标题所说,我在 Laravel 5.5 中的验证不起作用,这是我控制器中的代码

$val = $this->validate($request, [
                'name' => 'required',
                'email' => 'required|email'
                ]);
                if($val->fails()) {
                    return "Fail":
                } else {
                    return "Success";
                }

如果我尝试转储变量$val,我会得到null 作为回报。我还检查了我的输入是否正确,是的,$request->input() 返回了我的数据。

请求中的字段:

"name" => "test"
  "email" => "test@test.com"
  "oldPassword" => null
  "newPassword" => null
  "repeatPassword" => null

(未验证空字段,因为我在此请求中不需要它们,因此它们为空)

我已经有一段时间没有接触 Laravel 了,但我记得我总是用它来验证,我是不是遗漏了什么?

【问题讨论】:

    标签: php laravel validation null


    【解决方案1】:

    validate() 不返回任何内容。如果失败,它只会抛出400 Bad Request 错误,以及包含失败原因的消息(即“需要名字字段”)。您越过它的事实意味着数据是有效的。

    如果您想像这样使用自己的逻辑,您可以执行以下操作:

    $validator = \Validator::make($request->all(), [
          'name' => 'required',
          'email' => 'required|email'
    ]);
    
    if($validator->fails()){
        $errors = $validator->errors();
        ....
    

    【讨论】:

    • 谢谢,我想我可以使用文档的验证,但我不知道它是如何工作的。 \Validator 似乎工作正常。
    • 其实@Jeff, validate 方法返回一个数组。我很惊讶 OP 的输出转储如何为空。它绝对不是 Validator 对象,而是一个数组。查看laravel.com/api/5.5/Illuminate/Foundation/Validation/…
    • @Paras 啊。不知道为什么在这种情况下它为空。但我确实将validate() 函数追溯到Illuminate\Validation\Validator::validate() 方法,如果它失败,它会抛出错误。所以在那种情况下不会有回报。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-01
    • 2021-01-02
    相关资源
    最近更新 更多