Intereting Posts
Отображение / скрытие следующего div при наведении указателя на предыдущий div PHPMailer – этот поток не поддерживает SSL / crypto Загрузка файла Ajax с использованием JQuery, PHP не использовать сеанс в php Использование jQuery ajax для загрузки файлов и данных формы с помощью formData () Получение «косвенной модификации перегруженного имущества не имеет никакого эффекта» Не удалось получить доступ к сообщению об ошибке, соответствующему имени вашего поля Twilio – переадресация вызова через 2 кольца Печать записи несколько раз в PHP и MySql WooCommerce – добавление пользовательской цены на каждый товар в корзине Что означает это значение в PHP? Анализ проблем с SOAP-ответами в PHP с помощью simplexml Каков наилучший способ преобразования существующего PHP-класса в Java? Несколько файлов javascript / css: лучшие практики? Как создать параметризованный оператор PDO в PHP для динамического запроса?

Как проверить параметры маршрута в Laravel 5?

Как вы знаете, Laravel 5 изменяет способ, которым вы вызываете validator , старый способ вызывает validator facade , но теперь в базовом классе Controller присутствует признак ValidatesRequests , но метод validate принимает запрос как массив значений, но когда вы определяете параметры вашего маршрута, эти значения не сохраняются в Request , так как я могу проверить эти параметры?

Редактировать:

Маршрут:

 Route::get('/react-api/{username}', 'ProfileController@getUsername'); 

контроллер:

 public function getUsername(Request $request, $username) { $v = $this->validate($request, ['username' => 'required']); } 

Итак, вопрос, как я могу проверить этот параметр имени пользователя?

Solutions Collecting From Web of "Как проверить параметры маршрута в Laravel 5?"

Ответ Маникса не работал для меня, у меня были те же проблемы, что и Илияс. Проблема заключается в том, что параметры маршрута автоматически не доступны для FormRequest. Я закончил переопределять функцию all () в моем классе FormRequest:

 public function all() { // Include the next line if you need form data, too. $request = Input::all(); $request['username'] = $this->route('username'); return $request } 

Затем вы можете закодировать правила как обычно:

 public function rules() { return [ 'username' => 'required', ]; } 
 public function listTurns($doctor_id, $limit, $offset){ $r = [ 'doctor_id' => $doctor_id, 'limit' => $limit, 'offset' => $offset, ]; $validator = Validator::make($r, [ 'doctor_id' => 'required|numeric|min:1|exists:doctors,id', 'limit' => 'required|numeric|min:1', 'offset' => 'required|numeric|min:0', ]); } 

Предположите следующий маршрут:

 Route::get('profile/{id}', 'ProfileController@show'); 

Вы все еще можете проверить параметр id как способ L4:

 public function show(){ $validator = \Validator::make( \Input::all(), [ 'id' => ['required', 'numeric'] ] ); // run validator here } 

Если вам нужно проверить конкретные данные, посмотрите следующий пример:

 public function getUsername(Request $request, $username) { $validator = \Validator::make( [ 'username' => $username ], [ 'username' => ['required'] ] ); // run the validator here } 

L5 позволяет делать два других способа. Первый, используя общий класс Request введенный в контроллер:

 public function show(Request $request){ $this->validate($request, [ 'id' => ['required', 'numeric'] ]); // do stuff here, everything was ok } 

В L5 вам разрешено вызывать функции validate (), которые получают запрос и правила для его запуска. Эти функции отвечают за правила запуска, если какое-то правило выходит из строя, тогда пользователь перенаправляется на предыдущий запрос

Наконец, в качестве второго варианта вы можете использовать проверку запроса формы . Помните, что каждое значение GET и POST доступно через класс Request