【问题标题】:Laravel Sub-domain routing and resource controllersLaravel 子域路由和资源控制器
【发布时间】:2014-07-08 03:42:23
【问题描述】:

这是我的路线:

Route::group(array('domain'=>'{subdomain}.example.com'), function()  
{
    Route::group(array('before'=>array('authenticate')), function()
    {
        Route::resource('post', 'PostController');

        Route::resource('comments', 'CommentsController');

        Route::resource('forum', 'ForumController');

        Route::resource('users', 'UsersController');

    });
});

似乎默认情况下,我的所有资源控制器现在都将子域作为第一个参数,我找不到更改它的方法。

如果可能,我想完全忽略子域。

示例用例:

admin.example.com/forum/1?domain=foo

foo.example.com/forum/1

bar.example.com/forum/2

本网站有 2 个论坛,但只有 1 位管理员管理所有论坛。为了让管理员访问论坛 foo,管理员还必须提供 domain=foo 来查看它。

【问题讨论】:

  • 您可以发布其余的路线文件吗?除了 PostController,我没有看到任何其他资源控制器?
  • @TheShiftExchange 我已经全部添加进去了
  • Route::group(array('domain'=>'admin.example.com') 您可以在oute::group(array('domain'=>'{subdomain}.example.com') 规则之前单独使用管理员规则。
  • @AmitGarg 是的,但是如果我必须为每个路由域再次复制所有这些资源控制器,这似乎很丑陋。

标签: php laravel routing subdomain


【解决方案1】:

如果您不想基于子域路由,那么您应该只过滤子域进行访问。

Route::filter('subdomain', function($route, $request) 
{
    $host = $request->getHost();
    $parts = explode('.', $host);
    $subdomain = $parts[0];

    if ($subdomain == 'something')
    {
         // Allow or deny
    }
});


Route::group(array('before'=>array('subdomain|authenticate')), function()
    {
        Route::resource('post', 'PostController');

        Route::resource('comments', 'CommentsController');

        Route::resource('forum', 'ForumController');

        Route::resource('users', 'UsersController');

    });

【讨论】:

  • 我可能不够清楚。我需要为所有路由使用子域,因为普通用户和管理员都将访问相同的路由。但是 subdomain 参数对函数根本不重要,它们只是触发不同的身份验证。
  • 是的 - 对不起,你对我不够清楚 - 我不明白。您能否在您的问题中提供更多示例以扩展更多内容。
  • 哦等等 - 我现在明白了 - 给我 2 分钟 - 我会改变我的答案
  • 我在原始问题中添加了示例用例。希望它足够清楚。
  • 试试看是否有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-16
  • 2013-06-04
  • 2014-10-08
  • 1970-01-01
  • 2013-08-20
  • 2014-02-18
  • 2015-07-20
相关资源
最近更新 更多