使用Laravel重定向到路由组中的通配符前缀中的位置

时间:2015-01-20 12:47:59

标签: php redirect 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');
})

1 个答案:

答案 0 :(得分:1)

{location}的处理方式与普通路由参数类似,因此您可以将其作为第二个参数传递:

return Redirect::route('register', 'london')->withErrors($validator);

因为它是一个路由参数,你也可以像一个一样检索它。使用Route::input()。这意味着如果要重定向到与当前前缀相同的路由:

return Redirect::route('register', Route::input('location'))->withErrors($validator);

您还可以添加默认值:Route::input('location', 'london')