Как проверить входные данные из запроса GET в Laravel


Как проверить входные данные из запроса GET в Laravel

04.09.2020 11:53:26 Просмотров 3 Источник

Я хотел проверить входные данные из запроса GET без использования

это->validate($request... или \Validator:: make($request...

и предпочитаю делать это так

$input = $request - >validate ([...rules ...]);

однако, поскольку get requests не имеет параметров $request, как я могу этого достичь?

public function sampleGet($param1, $param2) {

     // How can I pass the $param1 and $param to to validate?
     $input = $request->validate([
         'param1' => 'required',
         'param2' => 'required  
     ]);
}
У вопроса есть решение - Посмотреть?

Ответы - Как проверить входные данные из запроса GET в Laravel / How to validate inputs from GET request in Laravel

lagbox

04.09.2020 12:01:36

Если вам нужны все параметры маршрута вы можете получить их в виде массива:

$request->route()->parameters()

Поскольку у вас уже есть эти параметры, передаваемые вашему методу, вы можете просто построить массив с их помощью:

compact('param1', 'param2');
// or
['param1' => $param1, 'param2' => $param2];

Однако вы не собираетесь использовать метод validate для запроса, вам придется вручную создать валидатор. Если только вы не хотите объединить этот массив в запрос или создать новый запрос с этими входными данными.

Нет ничего особенного в методе validate на контроллере или в запросе. Все они делают валидатор и проверяют данные так же, как и вы сами.

При ручном создании валидатора у вас все еще есть метод validate, который выдаст исключение, которое будет эквивалентно тому, что происходит по запросу и контроллеру с их методами validate.

Laravel 7.x Docs-валидация-ручное создание валидаторов - автоматическое перенаправление

Является ответом!
mmabdelgawad

04.09.2020 12:10:34

Вы можете сделать это, и он будет иметь то же поведение, что и validate

validator($request->route()->parameters(), [

    'param1' => 'required',
    'param2' => 'required'
    ....

])->validate();
Jayant

04.09.2020 05:11:31

Ты можешь это сделать.

public function getData(Request $request)
{
  try {
       $input['route1'] = $request->route('route1');
       $input['route2'] = $request->route('route2');
       $valid = Validator::make($input, [
            'route1' => 'required',
            'route2' => 'required'
         ]);
  } catch (\Throwable $th) {
    echo "<pre>";print_r($th->__toString());die;
  }
}

Или вы можете перейти по ссылке ниже для получения дополнительной информации.

https://laravel.com/docs/7.x/validation#manually-creating-validators

Помочь в развитии проекта:
Закрыть X