radar4ick
@radar4ick
web-developer

Почему не работает кастомная валидация?

Есть кастомное правило для проверки даты. Все по документации Laravel, но при этом не срабатывает и всегда возвращает, что ошибок нет. dump и dd из метода passes не реагирует никак. Есть какие нибудь предположения?
class CheckDeliveryDate implements Rule
{  
    public $client_id;
    private $error_messge;
  
    public function __construct(int $client_id)
    {
        $this->client_id = $client_id;
        $this->error_messge = "Некорректная дата доставки";
    }
  
    public function passes($attribute, $value)
    {
        $delivery_date = Carbon::parse($value);

        if ($delivery_date->isToday()) {
            $this->error_messge = "Дата доставки не может быть сегодняшней";

            return false;
        }

        if ($delivery_date->endOfDay()->isPast()) {
            $this->error_messge = "Дата доставки не может быть прошедшей";

            return false;
        }

        return true;
    }

    public function message() {
        return $this->error_messge;
    }
}

Подключаю в контроллере:
$validator = Validator::make(
    $request->all(),
    $this->rules($client_id)
);

Метод с массивом правил:
public function rules($client_id) {
    return [
        'orders.*.positions.*.delivery_time' => ['required', 'date', new CheckDeliveryDate($client_id)],
    ];
}
  • Вопрос задан
  • 155 просмотров
Решения вопроса 1
radar4ick
@radar4ick Автор вопроса
web-developer
Разобрался... Оказалось, что не совсем корректный JSON формат приходил. Валидатор работает с массивом, но не с коллекцией
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@NubasLol
dump и dd из метода passes не реагирует никак


Потому что не вызывается, вот и не работает. Ошибка здесь
'orders.*.positions.*.delivery_time'

Покажите что передаете
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы