【问题标题】:Laravel all input fields are requiredLaravel 所有输入字段都是必需的
【发布时间】:2021-05-14 03:39:20
【问题描述】:

我有大约 50 个输入字段,它们都是必需的。 有没有一种简单的方法来检查它们是否都设置好了? 所以我不必手动将模型中的每个字段都设置为“必需”的验证规则?

【问题讨论】:

标签: validation laravel


【解决方案1】:

我知道这已经晚了,但我写了一个简单的函数来为自己解决这个问题

foreach ($request->except('_token') as $data => $value) {
  $valids[$data] = "required";
}

$request->validate($valids);

祝你好运!

【讨论】:

  • 非常感谢您不需要 if 语句只需将 $valids 数组传递给验证器
【解决方案2】:

您可以使用下面的代码。这对我来说是必需的所有请求字段。

$request->validate([
        '*' => 'required',
    ]);

【讨论】:

    【解决方案3】:

    目前无法避免在 rules() 方法中引用 50 个字段中的每一个,因为返回的数组会通过这个:

    /**
     * Explode the rules into an array of rules.
     *
     * @param  string|array  $rules
     * @return array
     */
    protected function explodeRules($rules)
    {
        foreach ($rules as $key => &$rule)
        {
            $rule = (is_string($rule)) ? explode('|', $rule) : $rule;
        }
        return $rules;
    }
    

    您可以在 Validator 的构造函数中看到它:https://github.com/illuminate/validation/blob/master/Validator.php

    【讨论】:

      【解决方案4】:
       foreach($req->except('_token') as $data=>$value){
          $valids[$data] = "required";
       }
      
       $validator=  validator($req->all(),$valids);
       if ($validator->fails()) {
       foreach($validator->messages()->getMessages() as $key=>$val){
                  $response["$key"]=$val;
              }
              return response()->json([
                  'success'   => 0,
                  'errors'    =>$response,
              ]);
      

      【讨论】:

        【解决方案5】:

        您也可以像这样使用Facades 中的validator

        try {
            foreach ($request->except('_token') as $data => $value) {
                $valids[$data] = "required";
            }
        
            $validator = validator($request->all(), $valids);
            if ($validator->fails()) {
                foreach ($validator->messages()->getMessages() as $key => $val) {
                    $response["$key"] = $val;
                }
                return redirect()->back()
                    ->withErrors($response)
                    ->withInput();
            }
        }catch(\Exception $e){
            die($e->getMessage()) ;
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-02-24
          • 2014-10-28
          • 1970-01-01
          • 2022-10-25
          • 2019-05-04
          • 2018-11-21
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多