如何验证,如果数组是空的?(How do I validate if array is empty?

2019-10-22 18:58发布

我有5选择题下拉列表的形式。 提交时,我试图运行一些验证,以确认至少一个项目已被选中。

在我的控制器中的代码;

$input = Request::except('postcode_id'); //all user input from the form

$validator = \Validator::make(
    [
        $input => 'required'
    ]
);

if ($validator->fails())
{
    print "failed";
}else{
    print "passed";
}

我得到的错误是; Illegal offset type 。 我想我可能需要做一个自定义的验证,但想先检查,以防有更简单的方法。

Answer 1:

的第一个参数Validator::make()是数据,并且第二个是验证规则,其通过所述输入名称索引的数组。 您可以使用required_without_all验证至少有一个必须存在,但它是一个有点冗长:

$validator = \Validator::make($input, [
    'dropdown_1' => 'required_without_all:dropdown_2,dropdown_3,dropdown_4,dropdown_5'
    'dropdown_2' => 'required_without_all:dropdown_1,dropdown_3,dropdown_4,dropdown_5'
    'dropdown_3' => 'required_without_all:dropdown_1,dropdown_2,dropdown_4,dropdown_5'
    'dropdown_4' => 'required_without_all:dropdown_1,dropdown_2,dropdown_4,dropdown_5'
    'dropdown_5' => 'required_without_all:dropdown_1,dropdown_2,dropdown_3,dropdown_4'
]);

或者写一些代码来生成$rules阵列:

$fields = ['dropdown_1', 'dropdown_2', 'dropdown_3', 'dropdown_4', 'dropdown_5'];
$rules = [];
foreach ($fields as $i => $field) {
    $rules[$field] = 'required_without_all:' . implode(',', array_except($fields, $i));
}
$validator = \Validator::make($input, $rules);


Answer 2:

您需要在您的验证,不变量来使用字符串。 试试这个。

$validator = \Validator::make(
    [
        'input' => 'required'
    ]
);

自定义的验证本身并不太难。 我使用它所有阵列输入验证的时间。 在Laravel 5请求,我会做这样的事情

public function __construct() {
    Validator::extend("pcc", function($attribute, $value, $parameters) {
        $rules = [
            'container_id' => 'exists:containers,id'
        ];
        foreach ($value as $containerId) {
                $data = [
                    'container_id' => $containerId
                ];
                $validator = Validator::make($data, $rules);
                if ($validator->fails()) {
                    return false;
                }
            }
        return true;
    });
}

public function rules() {
    return [
        'containers' => 'required|pcc',
    ];
}


文章来源: How do I validate if array is empty?