Laravel子域路由而不将变量传递给URL :: route()

时间:2014-08-19 08:27:53

标签: php laravel laravel-4 laravel-routing

在Laravel 4应用程序中,我使用子域路由围绕一堆Route :: resource这样:

Route::group(['domain' => '{account}.my.app'], function()
{
    Route::group(['before' => 'auth'], function($account)
    {
        Route::resource('organisations', 'OrganisationsController');
        Route::resource('clients', 'ClientsController');
        Route::resource('domains', 'DomainsController');
    });
});

在我的身份验证过滤器中,我执行以下操作:

Route::filter('auth', function($route)
{
    // you could now access $account in a controller if it was passed as an argument to the method
    $account = $route->getParameter('account');

    // share account variable with all views
    View::share('account', $account);

    // Auth::guest Returns true if the current user is not logged in (a guest).
    if (Auth::guest()) return Redirect::guest('login');
});

在我的观看中,我现在可以访问$account,但如果我希望URL::route()的来电正确,我必须手动传递帐户变量,例如URL::route('clients.show',['account' => $account]),否则会生成网址比如%7Baccount%7D.my.app

这有点痛苦,看起来并不优雅,有没有其他或更好的方法来实现这一目标?我想我可以创建自己的路径助手而不是内置的路径助手。 但是,我也在控制器中使用Redirect :: route()重定向,所以我还需要在这里进行更新。

修改

正如评论中所建议的,扩展Route API可能是最好的方法。有没有人有任何建议如何做到这一点?

感谢。

0 个答案:

没有答案