【问题标题】:only get validated data from laravel validator仅从 laravel 验证器获取经过验证的数据
【发布时间】:2018-11-28 08:06:39
【问题描述】:

使用验证器验证数据时,可以使用getData() 方法从验证器获取所有处理过的数据。但是,这将返回已传递给验证器的所有数据。我只想要真正符合验证模式的数据。

例如:

$data = [
    'email'          => email@example.com,
    'unnecessaryKey' => 'whatever'
];

$validator = Validator::make($data, [
        'email'       => 'required|string',
]);

$validator->getData()

将返回“unnecessaryKey”以及电子邮件。问题是:在这种情况下是否可以只返回电子邮件,即使我也传递了不必要的密钥?

【问题讨论】:

    标签: php laravel validation


    【解决方案1】:

    如果你从 $request 中获取数据,你可以试试

    $validator = Validator::make($request->only('email') , [
            'email'       => 'required|string',
    ]);
    

    如果您正在验证 $data 数组,那么您可以尝试

    $validator = Validator::make(collect($data)->only('email')->toArray() , [
            'email'       => 'required|string',
    ]);
    

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      您应该为此使用Form Requests

      1) 创建表单请求类

      php artisan make:request StoreBlogPost
      

      2) 向类添加规则,在 app/Http/Requests 目录中创建。

      public function rules()
      {
        return [
          'title' => 'required|unique:posts|max:255',
          'body' => 'required',
        ];
      }
      

      3) 在控制器中检索请求,它已经过验证。

      public function store(StoreBlogPost $request)
      {
        // The incoming request is valid...
      
        // Retrieve the validated input data...
        $validated = $request->validated();
      }
      

      【讨论】:

        猜你喜欢
        • 2018-06-04
        • 2016-06-30
        • 1970-01-01
        • 2018-11-26
        • 2014-01-30
        • 1970-01-01
        • 2018-05-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多