【问题标题】:Validation under array validation in laravellaravel中数组验证下的验证
【发布时间】:2019-02-21 01:02:24
【问题描述】:

如果我有一个数组验证规则,我如何检查数组中的所有项目是否都是有效的电子邮件?我正在使用这个:https://laravel.com/docs/5.1/validation#rule-array 用于数组验证规则。

$this->validate($request, [
    'email' => 'required|array.email'
]);

注意:我使用的是 laravel 5.1 版本

更新 - 根据要求。

【问题讨论】:

    标签: php laravel laravel-5


    【解决方案1】:

    检查是验证:

    5.2以上

    $this->validate($request, [
        'email.*' => 'required|array|email'
    ],[
        'email.required' => 'message required',
        'email.array' => 'message array',
        'email.email' => 'message email',
    ]);
    

    小于 5.2

        $validator = \Validator::make($request->all(), [
            'email' => 'array',
    
            /* Other rules */
    
        ],[
            'email.required' => 'message required',
            'email.array' => 'message array',
            'email.email' => 'message email',
        ]);
    
        $validator->each('email', 'required|email');
    
        if($validator->fails()) 
            return back()->withErrors($validator->errors());
    
    
        dd('Success All Email ;)');
    

    【讨论】:

    【解决方案2】:

    您需要自定义验证器。在 Laravel Request 中你可以做类似的事情

    public function __construct() {
        Validator::extend("emails", function($attribute, $value, $parameters) {
            $rules = [
                'email' => 'required|email',
            ];
            foreach ($value as $email) {
                $data = [
                    'email' => $email
                ];
                $validator = Validator::make($data, $rules);
                if ($validator->fails()) {
                    return false;
                }
            }
            return true;
        });
    }
    
    public function rules() {
        return [
            'email' => 'required|emails'
        ];
    }
    

    或者

    从 laravel 5.2 开始验证数组:

    验证数组表单输入字段并不一定很痛苦。例如,要验证给定数组输入字段中的每封电子邮件是否唯一,您可以执行以下操作:

    $validator = Validator::make($request->all(), [
        'person.*.email' => 'email|unique:users',
        'person.*.first_name' => 'required_with:person.*.last_name',
    ]);
    

    同样,您可以在语言文件中指定验证消息时使用 * 字符,从而轻松为基于数组的字段使用单个验证消息:

    'custom' => [
        'person.*.email' => [
            'unique' => 'Each person must have a unique e-mail address',
        ]
    ],
    

    希望这对您有所帮助。

    【讨论】:

      猜你喜欢
      • 2021-07-24
      • 2016-09-01
      • 2018-01-03
      • 1970-01-01
      • 2019-01-14
      • 1970-01-01
      • 2015-08-17
      • 2019-10-21
      • 1970-01-01
      相关资源
      最近更新 更多