Я пытаюсь создать собственное правило для массива флажков. Данные запроса поступают правильно, например
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.';
}
}
Вот и все, спасибо @Joe






Если вы хотите передать весь массив, вам нужно написать так:
'job-payment' => [ new NotAllTrue ],
Если вы хотите независимо проверить каждый элемент массива, тогда:
'job-payment.*' => [ new NotAllTrue ],
Что произойдет, если вы не добавите
.*в правило?