laravel: избегайте разных параметров в методе get - PullRequest
0 голосов
/ 31 октября 2018

Например, у меня есть этот 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);
}

1 Ответ

0 голосов
/ 31 октября 2018

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

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

$data = $request->only(['valid_1', 'valid_2']);
...