Как зарегистрировать маршрут в Laravel с get-параметрами?

Ссылка скопирована
1 ответ

Только начал изучать Laravel.
В файле web.php

Route::get('/?example={id}', function(IlluminateHttpRequest $request) {     $one = $request->url();     $two = $request->fullUrl();     dump($one);     dump($two); });

Route::get('/?example={id}', function(IlluminateHttpRequest $request) { $one = $request->url(); $two = $request->fullUrl(); dump($one); dump($two); });

Итог: 404 ошибка при вводе URL-адреса localhost/?example=1.

Кто-нибудь может привести пример кода как создавать маршруты с URL-адресом localhost/?example=1?
*Значение example динамично.

Также я не совсем понимаю что такое параметры маршрута. Как я понял, это динамическая часть URL.
А разве localhost/?example=1 не динамическая часть (раз значение example, по логике, обычно меняется)?
Есть мысль, что параметры маршрута это и есть GET-параметры в Laravel.

Пожалуйста, наведите порядок в моей голове, дав четкое представление о том, что такое параметры маршрута в Laravel и как регистрировать маршрут с URL, в котором есть get-параметры.

P.S. Собственно все эти пробелы всплыли, когда я хотел увидеть результат работы методов url() и fullUrl(), чтобы увидеть разницу.

Дополнительно:

Такой маршрут (c гет параметрами) зарегистрировать не получится. Делай без параметров, а уже внутри контроллера, который будет обрабатывать маршрут обрабатывай условия.

Route::get('/', function(IlluminateHttpRequest $request) {     $id = $request->input('id');     match($id) {         'one' => $this->caseOne(),         'two' => $this->caseTwo(),         default=> $this->caseDefault(),     } });

Route::get('/', function(IlluminateHttpRequest $request) { $id = $request->input('id'); match($id) { 'one' => $this->caseOne(), 'two' => $this->caseTwo(), default=> $this->caseDefault(), } });

Под параметрами маршрута скорее всего подразумевается когда ты передаешь данные через path, а не query string.

Например

Route::get('/page/{page}/{id}', function(IlluminateHttpRequest $request, string $page, string $id) {     dump($page, $id); });

Route::get('/page/{page}/{id}', function(IlluminateHttpRequest $request, string $page, string $id) { dump($page, $id); });

Для урл /page/example/10 будет выведено example и 10

  • Спасибо за ответ.
    Пока что я не могу оценить ценность вашего ответа, потому что только начал знакомство с Request и учусь с ним работать и, как следствие, не могу проверить руками ваш код. Будет неловко, если я посчитаю ваш ответ правильным, а на практике у меня возникнут трудности.
  • Matilda-kot, не беспокойтесь. ответ совершенно правильный.
Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Алексей Денисов Ответ

Для того чтобы зарегистрировать маршрут в Laravel с get-параметрами, вам необходимо использовать метод Route::get() в файле routes/web.php.

Пример:

Route::get('/example', function () {
    return 'This is an example route with parameters';
});

Route::get('/example', function () { return 'This is an example route with parameters'; });

Если вы хотите передавать параметры через URL, вам нужно указать их в маршруте и использовать их в функции обратного вызова. Например, если вы хотите передать параметр id, вы можете сделать это следующим образом:

Route::get('/example/{id}', function ($id) {
    return 'This is an example route with id ' . $id;
});

Route::get('/example/{id}', function ($id) { return 'This is an example route with id ' . $id; });

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

Route::get('/example/{id}/{name}', function ($id, $name) {
    return 'This is an example route with id ' . $id . ' and name ' . $name;
});

Route::get('/example/{id}/{name}', function ($id, $name) { return 'This is an example route with id ' . $id . ' and name ' . $name; });

Вы также можете использовать необязательные параметры, указав их в фигурных скобках и добавив ? после имени параметра:

Route::get('/example/{id?}', function ($id = null) {
    return 'This is an example route with id ' . $id;
});

Route::get('/example/{id?}', function ($id = null) { return 'This is an example route with id ' . $id; });

После того как вы зарегистрировали маршрут с get-параметрами, вы можете обращаться к нему через URL вашего приложения, передавая необходимые параметры. Например, если у вас есть маршрут /example/{id}, вы можете обратиться к нему следующим образом: http://yourdomain.com/example/123, где 123 - значение параметра id.

Надеюсь, это поможет вам зарегистрировать маршрут в Laravel с get-параметрами. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно