如何使用控制器处理Laravel 4子域路由,将子域作为参数传递

时间:2014-02-27 15:49:20

标签: laravel-4 subdomain argument-passing laravel-routing

在关于路由的Laravel 4文档之后,我一直在尝试创建一个域路由来处理通配符子域并将其传递给控制器​​操作,但是我在传递参数时遇到了麻烦。

Route::group(array('domain' => '{subdomain}.myapp.com'), function()
{
    Route::get('/', function($subdomain)
    {
        die($subdomain);
    });
});

如果我写这样的路线,它将打印出子域,无论它是什么。问题是我不想在routes.php文件中编写处理这些情况的代码,而是使用Controller来处理所有这些,而无需从subdomain.myapp.com重定向到myapp.com/controller/action/子域。 所以,像这样:

Route::group(array('domain' => '{subdomain}.myapp.com'), function()
{
    Route::get('/', 'MyController@myAction', $subdomain);
});

在这种情况下,如何将{subdomain}参数传递给控制器​​?

1 个答案:

答案 0 :(得分:2)

好像早上比晚上更聪明。我选择了一个调度解决方案,所以如果其他人有更优雅的解决方案,请随时发布,我会接受你的回答。

Route::group(array('domain' => '{subdomain}.myapp.com'), function()
{
    Route::get('/', function($subdomain) {
        $request = Request::create('/myRoute/' . $subdomain, 'GET', array());
        return Route::dispatch($request)->getContent();
    });
});

Route::get('myRoute/{subdomain}', 'MyController@myAction');