【问题标题】:Validate an array using Laravels Validator [duplicate]使用 Laravel 验证器验证数组 [重复]
【发布时间】:2017-01-10 17:14:35
【问题描述】:

是否可以使用 Laravels validate 函数来验证数组,如果可以,如何?

我对验证输入或请求不感兴趣,我只想在一个完全普通的数组上使用 Laravel 强大的验证语法。

示例

$arr = array(
    'name' => 'David',
    'year' => 1986,
    'score' => 532
    );

$this->validate($arr, [
    'name' => 'required',
    'year' => 'numeric',
    'score' => 'required|numeric'
    ]);

这会报错

传递给 App\Http\Controllers\Controller::validate() 的参数 1 必须是 Illuminate\Http\Request 的实例

  • Laravel 版本:5.1
  • PHP 版本:7.1

【问题讨论】:

    标签: php laravel validation


    【解决方案1】:

    你可以使用

    $arr = array(
        'name' => 'David',
        'year' => 1986,
        'score' => 532
        );
    
    $validator = Validator::make($arr, [
        'name' => 'required',
        'year' => 'numeric',
        'score' => 'required|numeric'
        ]);
    

    if ($validator ->passes()){
    /* True condition here*/
    }
    

    【讨论】:

    • 哦。明显地。谢谢 - 我会接受你的回答
    • @Daniel 好的。我是否正确理解了你的问题?还是我错过了什么?
    • 这正是我想要的
    【解决方案2】:

    $this->validate() 方法需要 'Request' 作为第一个参数。 要使用 $this->validate() 方法,您应该在调用 $this->validate() 之前合并请求数据。

    $request->merge(array(
        'name' => 'David',
        'year' => 1986,
        'score' => 532
    ));
    
    $this->validate($request->only(['name', 'year', 'score']), [
        'name' => 'required',
        'year' => 'numeric',
        'score' => 'required|numeric'
    ]);
    

    附:不要忘记将Request 服务注入到您的方法中。

    【讨论】:

      【解决方案3】:
      $validator = Validator::make(
              $arr,
              array(
                  'name' => 'required',
                  'year' => 'numeric',
                  'score' => 'required|numeric'
              )
          );
      
          if ($validator->fails()) {
              $errors = $validator->errors();
              print_r($errors);
          }
      

      【讨论】:

        猜你喜欢
        • 2016-02-22
        • 2017-03-23
        • 2016-09-01
        • 1970-01-01
        • 2019-02-21
        • 2018-01-03
        • 1970-01-01
        • 2018-05-22
        • 1970-01-01
        相关资源
        最近更新 更多