【问题标题】:Validate POST request Laravel?验证 POST 请求 Laravel?
【发布时间】:2018-03-23 14:34:05
【问题描述】:

我验证 POST 请求,例如:

$validator = Validator::make($request->all(), [
            "id.*" => 'required|integer'
        ]);

        if ($validator->fails()) {
            return response()->json($validator->errors, 400);
        }

        echo "Ok";

当我发送不带参数id 的请求时,它会跳过验证并返回echo "Ok";。

为什么验证不起作用?

【问题讨论】:

  • 你为什么使用id.*?你试过id吗?
  • 您通常希望以id 发送什么?

标签: laravel laravel-5.3 laravel-5.4 laravel-validation laravel-5.5


【解决方案1】:

如果您希望 id 是整数数组,您应该像这样更新验证规则:

$validator = Validator::make($request->all(), [
            "id" => 'required|array',
            "id.*" => 'integer'
        ]);

【讨论】:

    【解决方案2】:

    首先知道什么时候使用 $request->validate();当它失败时引发异常! 它们由 laravel 自动处理。如果是 get 或 普通的发布表单, 则 该过程将重定向回表单。

    需要注意的是,在 AJAX 请求期间使用 validate 方法时,Laravel 不会生成重定向响应。 相反,Laravel 会生成一个包含所有验证错误的 JSON 响应。此 JSON 响应将与 422 HTTP 状态代码一起发送。

    如果你不想有这样的自动行为,手动创建一个验证器,然后你可以用 ->fails() 方法检查,如示例所示波纹管。在很多情况下,这可能是少数。

    <?php 
    public function store(Request $request)
    
            {
                $validator = Validator::make($request->all(), [
                    'title' => 'required|unique:posts|max:255',
                    'body' => 'required',
                ]);
    
                if ($validator->fails()) {
                    return redirect('post/create')
                                ->withErrors($validator)
                                ->withInput();
                }
    
                // Store the blog post...
            }
        }
    

    没有比文档本身更好的了:https://laravel.com/docs/5.7/validation 有很多选项可以个性化我们的验证过程。

    【讨论】:

      猜你喜欢
      • 2017-10-23
      • 1970-01-01
      • 2017-11-21
      • 2020-01-13
      • 2019-04-13
      • 1970-01-01
      • 2017-10-01
      • 2019-12-31
      • 2020-11-06
      相关资源
      最近更新 更多