Я использую 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()? Думаю, в моем случае это будет лучшее решение






Да, вы можете перенаправить на именованные маршруты и передавать параметры, например:
return redirect()->route('en.about', ['param' => 123]);
Не уверен, почему вы не можете создать именованный маршрут? Их использование дает много преимуществ.
Вы должны получить параметр в 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])
});
спасибо, но в этом случае мне нужно сначала создать именованный маршрут
по каким-то причинам параметр не отображается. Я добавил его как /about/{param?}, function($param=null), потому что он необязательный, но я не могу получить значение
я обновил ответ. Вы пробовали использовать этот маршрут с параметром и без него?
не уверен, что это связано с версией, но мне нужно, чтобы параметр передавался в вызов функции. т.е. function ($param)
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Ψ посмотрите обновленный ответ, у меня была опечатка
Если вы не хотите добавлять имя маршрута, вы можете сделать то же самое с функцией контроллера.
Route::get('/about/{param}', function () {
return \Redirect::action('CONTROLLER@FUNCTION',['param'=>$param])
});
ИЛИ со вспомогательной функцией
return redirect()->action('CONTROLLER@FUNCTION');
спасибо, но проблема в том, что проект, с которым я работаю, в основном просто возвращает представление, он не вызывает метод контроллеров
но для перенаправления вам необходимо зарегистрировать этот маршрут
просто сделайте что-нибудь вроде этого:
return redirect('/en/about?param='.$param);
В вашем случае лучше всего поступить так:
return redirect(route("en.about")."?param=123");
спасибо, но опять же требуется именованный маршрут. есть ли способ сделать это без создания именованного маршрута?