laravel: избегайте разных параметров в методе get

Например, у меня есть этот URL:

http://127.0.0.1/public?valid=test1&invalid=test2

Поэтому я отправляю 2 параметра связанной функции в ее контроллере:

       $input = $request->all();
       $validator = Validator::make($input, [
         'valid' => 'nullable|string',
       ]);

       if ($validator->fails())
       {
         return back()->withInput()->withErrors($validator);
       }

Я ожидаю, что этот URL-адрес работает:

http://127.0.0.1/public?valid=test1

Но для этого: http://127.0.0.1/public?invalid=test2

Я не хочу, чтобы этот URL работал, потому что я не определяю параметр invalid в Validator (маршрут принял этот URL):

Доза поддержки laravel, чтобы отказаться от разных параметров?

На веб-сайте laravel тоже есть эта ошибка

https://laravel.com/?asd=asd

Мое решение:

$input = $request->all();
$valid = ['valid'];
foreach($input as $key => $val)
{
   if(!in_array($key,$valid)) abort(404);
}

person Areza    schedule 30.10.2018    source источник
comment
Чтобы выбросить 404, если переданы недопустимые параметры, вы можете сделать: if ($request->except('valid')) abort(404);.   -  person fubar    schedule 31.10.2018


Ответы (1)


Вы можете использовать $request->only(), чтобы получить только те параметры, которые вам нужны:

https://laravel.com/docs/5.7/requests#retrieving-input

$data = $request->only(['valid_1', 'valid_2']);
person newUserName02    schedule 31.10.2018
comment
Я пробовал этот метод раньше. да, он удаляет другие параметры, но не возвращает, например, страницу 404 для неправильного URL. Так что проблема с seo остается. - person Areza; 31.10.2018