Как использовать два поля при пользовательской проверке в Laravel

#laravel #validation

#laravel #проверка

Вопрос:

Может кто-нибудь помочь мне получить одно значение из $validator->getData() ? Я хочу использовать время и заголовок в своем запросе, но, похоже, я не могу получить значение времени.

Вот правило:

 $this->validate($request, [
    'name'  => 'required|min:5|max:15',
    'title' => 'required|min:5|max:100|availablee',
    'time'  => 'required|available|duration'
]);
 

Это код для availablee , я могу получить значение title через $value , но я не могу получить значение time из array_get .

 <?php

Validator::extend('availablee', function ($attribute, $value, $parameters, $validator) {
    $time1 = array_get($validator->getData(), $parameters[4]);
    $time = explode(" - ", $time1);

    $start = $this->change_date_format($time[0]);
    $end = $this->change_date_format($time[1]);

    // Search for any possible clash with available events
    $scene1 = DB::table('events')
        ->where('title', '==', $value)
        ->where('start_time', '<=', $start)
        ->where('end_time', '>=', $end)
        ->count();

    if ($scene1 > 0) {
        return false;
    }

    return true;
});
 

Этот код дает мне…

Исключение ErrorException в CheckRoomAvailability.php строка 83: Неопределенное смещение: 4

Комментарии:

1. ну, ключ 4 не существует в вашей $parameters переменной, dd($parameters); выше этого и проверьте его значения.

2. я попробовал dd($parameters); и это дает мне [ ] массив. я попытался dd($validator); и это дает мне данные, которые мне нужно использовать. как я могу получить конкретное значение в валидаторе? пожалуйста, помогите

Ответ №1:

сделано с помощью этого кода

 $time1 = $validator->getData();     
$time = explode(" - ",$time1['time'] );
 

вместо того , чтобы

     $time1 = array_get($validator->getData(), $parameters[4]); 
    $time = explode(" - ",$time1 );