Laravel 7.4. Есть ли способ проверить параметры строки URL-адреса в запросе GET помимо регулярных выражений?

У меня есть URL-адрес следующей формы:

GET /cat/{cat}/meows/{overTime}

Я могу написать метод контроллера, который выглядит так, чтобы захватить значения:

public function getMeowsOverTime(Cat cat, int overTime)

Я хотел бы проверить значения {cat} и {overTime}, прежде чем они попадут в метод контроллера.

Я попытался создать собственный объект MeowsOverTimeRequest, который расширяет Illuminate\Http\Request в соответствии с рекомендацией здесь: Laravel 5.7 - переопределить метод all() в классе проверки запроса для проверки параметров маршрута?

Итак, это будет:

class MeowsOverTimeRequest extends Request
{
    public function authorize()
    {
        return true;
    }

    public function all($keys = null)
    {
        $request = parent::all($keys);
        $request['cat'] = $this->route('cat');
        $request['overTime'] = $this->route('overTime');
        return $request;
    }

    /**
    * Get the validation rules that apply to the request.
    *
    * @return array
    */
    public function rules()
    {
        return [
            'cat' =>
            [
                'required',
                'integer'
            ],
            'overTime' =>
            [
                'required',
                'integer',
                Rule::in(Cat::getMeowTimeOptions())
            ]
        ];
    }
}

Но $this->route('cat') и $this->route('overTime') возвращают значение null. Как я могу получить доступ к этим переменным?

Я бы предпочел не использовать проверку регулярных выражений из-за к тому, что overTime ограничено тем, что возвращается из Cat::getMeowTimeOptions


person pickle    schedule 22.04.2021    source источник