Добавить параметр get в метод перенаправления laravel

Я использую laravel 5.6

У меня есть параметр GET, который я хочу передать функции перенаправления.

Route::get('/about', function () {
   //I want to add param to this redirect function
   return redirect('/en/about');
});

если после перенаправления маршрут выглядит как /about?param=123, param будет потерян. есть ли способ добавить параметр в метод перенаправления? как я вижу, эта функция не включает входные параметры. параметр является необязательным, поэтому его нельзя указывать. может есть способ переопределить эту функцию? или какое-то другое решение? все предложения будут оценены

ОБНОВИТЬ

можно ли отменить метод redirect()? Думаю, в моем случае это будет лучшее решение

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
5
0
21 785
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Да, вы можете перенаправить на именованные маршруты и передавать параметры, например:

return redirect()->route('en.about', ['param' => 123]);

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

devnull Ψ 12.06.2018 14:17

Не уверен, почему вы не можете создать именованный маршрут? Их использование дает много преимуществ.

Phiter 12.06.2018 14:19
Ответ принят как подходящий

Вы должны получить параметр в URL-адресе и передать его методу перенаправления в массиве

Route::get('/about/{param}', function () {
   return \Redirect::route('/en/about', ['param'=>$param])
});

без использования именованного маршрута

Route::get('/about/{param}', function () {
   return redirect('/en/about', ['param'=>$param])
});

Для необязательного параметра

Route::get('/about/{param?}', function ($param = 'my param') {
   return redirect('/en/about', ['param'=>$param])
});

спасибо, но в этом случае мне нужно сначала создать именованный маршрут

devnull Ψ 12.06.2018 14:16

по каким-то причинам параметр не отображается. Я добавил его как /about/{param?}, function($param=null), потому что он необязательный, но я не могу получить значение

devnull Ψ 12.06.2018 14:28

я обновил ответ. Вы пробовали использовать этот маршрут с параметром и без него?

suzan 12.06.2018 14:37

не уверен, что это связано с версией, но мне нужно, чтобы параметр передавался в вызов функции. т.е. function ($param)

matt 25.05.2021 13:08
Route::get('/about', function () {
   //I want to add param to this redirect function
   return redirect()->to(url('/en/about',['param' => 'Pram vakue', 'param2' => $param]));
});

Если вы используете route(), вам необходимо создать именованный маршрут.

Надеюсь это поможет

это не удается, method url does not exist. возможно, это было в более старой версии laravel

devnull Ψ 12.06.2018 14:15

@ devnullΨ посмотрите обновленный ответ, у меня была опечатка

Adnan Mumtaz 12.06.2018 14:21

Если вы не хотите добавлять имя маршрута, вы можете сделать то же самое с функцией контроллера.

Route::get('/about/{param}', function () {
   return \Redirect::action('CONTROLLER@FUNCTION',['param'=>$param])
});

ИЛИ со вспомогательной функцией

return redirect()->action('CONTROLLER@FUNCTION');

спасибо, но проблема в том, что проект, с которым я работаю, в основном просто возвращает представление, он не вызывает метод контроллеров

devnull Ψ 12.06.2018 14:19

но для перенаправления вам необходимо зарегистрировать этот маршрут

DsRaj 12.06.2018 14:21

просто сделайте что-нибудь вроде этого:

 return redirect('/en/about?param='.$param);

В вашем случае лучше всего поступить так:

return redirect(route("en.about")."?param=123");

Другие вопросы по теме