Как передать строку запроса с маршрутами в laravel 5.4

57
5

Я использую Laravel 5.4. Я хочу использовать строку запроса, как показано ниже:

tempsite.com/lessons?id=23

Для получения информации о том, как маршруты должны быть изменены. Можно дать маршрут следующим образом.

Route::get('lessons/id={id}', ['as' => 'lessons.index', 'uses' => 'Lessons\LessonController@index']);

Но добавив '?' не получается для меня. Пожалуйста, помогите нам решить проблему как можно раньше.

спросил(а) 2017-07-26T11:09:00+03:00 3 года, 2 месяца назад
1
Решение
71

Нет необходимости определять параметры строки запроса в ваших маршрутах. Вы можете вернуть параметры строки запроса в свой контроллер следующим образом:

Пример URL: tempsite.com/lessons?id=23

public function lessons(Request $request)
{
$request->get('id'); // Using injection
Request::get('id'); // Using the request facade
request()->get('id'); // Using the helper function
}

Вы даже можете проверить параметр:

public function lessons(Request $request)
{
$this->validate($request, ['id' => 'required|integer']);
}

Примечание. Если вы хотите сделать URL недоступным, если идентификатор опущен, см. Ответ @DarkseidNG.

ответил(а) 2018-01-31T22:56:00+03:00 2 года, 8 месяцев назад
41

Вместо tempsite.com/lessons?id=23 Пропустите его так, как это tempsite.com/lessons/23 и на маршруте

Route::get('lessons/{id}', ['as' => 'lessons.index', 'uses' => 'Lessons\LessonController@index']);

чтобы получить идентификатор в контроллере, напишите свою функцию следующим образом:

public function index($id)
{
//do anything with $id from here
}

ответил(а) 2017-07-26T13:25:00+03:00 3 года, 2 месяца назад
41

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

Route::resource('lessons', 'Lessons\LessonController');

Затем вы можете использовать привязку маршрутной модели для привязки экземпляра модели, который соответствует этому конкретному идентификатору.

Route::model('lesson', Lesson::class);

Это будет сделано в вашем RouteServiceProvider.

Я также предложил бы неплохо прочитать следующую документацию на веб-сайте laravel: https://laravel.com/docs/5.4/routing. Это дает очень хорошее представление о том, как работают маршруты и как они должны быть структурированы.

ответил(а) 2017-07-26T11:18:00+03:00 3 года, 2 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема