使用 Laravel 重定向到路由组中通配符前缀中的正确位置
Redirect to correct location in wildcard prefix in route group using Laravel
我的很多网址前都有位置前缀,例如example.com/london/
问题是当我想使用别名在我的控制器中重定向时,像这样:
if($validator->fails()) {
return Redirect::route('register')->withErrors($validator);
}
它重定向到 example.com/%7Blocation%7D/register
而不是 example.com/london/register
是否有一个简单的修复方法,以便它包含正确的位置,或者我每次重定向时都必须手动输入该位置吗?
我的routes.php
Route::group(['prefix' => '{location}'], function() {
Route::get('/', 'LocationController@home');
Route::get('/register', array('as' => 'register', 'uses' => 'AuthController@getRegister'))->before('guest');
Route::post('/register', array('uses' => 'AuthController@postRegister'))->before('csrf');
})
{location}
像普通路由参数一样处理,所以你可以将它作为第二个参数传递:
return Redirect::route('register', 'london')->withErrors($validator);
因为它是一个路由参数,你也可以像一个一样检索它。与 Route::input()
。这意味着如果你想重定向到与当前具有相同前缀的路由:
return Redirect::route('register', Route::input('location'))->withErrors($validator);
您还可以添加默认值:Route::input('location', 'london')
我的很多网址前都有位置前缀,例如example.com/london/
问题是当我想使用别名在我的控制器中重定向时,像这样:
if($validator->fails()) {
return Redirect::route('register')->withErrors($validator);
}
它重定向到 example.com/%7Blocation%7D/register
而不是 example.com/london/register
是否有一个简单的修复方法,以便它包含正确的位置,或者我每次重定向时都必须手动输入该位置吗?
我的routes.php
Route::group(['prefix' => '{location}'], function() {
Route::get('/', 'LocationController@home');
Route::get('/register', array('as' => 'register', 'uses' => 'AuthController@getRegister'))->before('guest');
Route::post('/register', array('uses' => 'AuthController@postRegister'))->before('csrf');
})
{location}
像普通路由参数一样处理,所以你可以将它作为第二个参数传递:
return Redirect::route('register', 'london')->withErrors($validator);
因为它是一个路由参数,你也可以像一个一样检索它。与 Route::input()
。这意味着如果你想重定向到与当前具有相同前缀的路由:
return Redirect::route('register', Route::input('location'))->withErrors($validator);
您还可以添加默认值:Route::input('location', 'london')