针对 Laravel 5 中输入数组的自定义规则

卡米洛·帕扬

我正在尝试针对一组复选框制定自定义规则。请求数据正确地像

cbarray => [
  cb1 => null,
  cb2 => true,
  cb3 => true,
]

我正在尝试制定一个验证规则,如果所有复选框都设置为 true,则该规则将失败。

然后我将它添加到我的 Laravel 规则中

'job-payment.*' => [ new NotAllTrue ],

期望这将作为值数组发送到我的规则中,但它似乎只发送第一个属性和值。

<?php

namespace App\Rules;

use Illuminate\Contracts\Validation\Rule;

class NotAllTrue implements Rule
{    
    /**
     * Determine if the validation rule passes.
     *
     * @param  string  $attribute
     * @param  mixed  $value
     * @return bool
     */
    public function passes($attribute, $value)
    {
        return !array_reduce($value, function ($carry, $val) {
            return $carry && $val;
        }, true);
    }

    /**
     * Get the validation error message.
     *
     * @return string
     */
    public function message()
    {
        return 'These cannot all be true.';
    }
}
迈克福克斯科技

如果你想传递整个数组,你必须这样写:

'job-payment' => [ new NotAllTrue ],

如果要独立验证数组的每个元素,则:

'job-payment.*' => [ new NotAllTrue ],

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章