2

我正在创建一个 SaaS 应用程序(谁不是?),并且像大多数 SaaS 应用程序一样,我采用了帐户子域方法。我的路线文件如下所示:

$router->group(['domain' => '{account}.example.com'], function($router)
{
    $router->get('/', function()
    {
        return response('Hello, world.');
    });
});

然后我决定在我的RouteServiceProvider文件中添加一些路由参数验证和绑定:

public function boot(Router $router)
{
    parent::boot($router);

    $router->pattern('account', '[a-z0-9]+');

    $router->bind('account', function($subdomain)
    {
        return Account::whereSubdomain($subdomain)->firstOrFail();
    });
}

但是,这些实际上似乎并没有被触发。我知道这一点,因为我可以dd('here?')bind通话中添加类似的内容,并且从未触发过。我还可以将我的account模式过滤器减少到类似的东西[0-9]+,如果我在子域中包含字母,它仍然会匹配。

我究竟做错了什么?如何获取路由模式和绑定以处理domain路由组键中的变量?

4

1 回答 1

0

结果证明将任何绑定移动到map方法(而不是boot)方法是有效的,并且模式过滤器需要进入路由组定义,如下所示:

$router->group(['domain' => '{account}.example.com'], function($router)
{
    $router->pattern('account', '[a-z0-9]+');

    $router->get('/', function()
    {
        return response('Hello, world.');
    });
});

不理想,所以任何人都知道如何将过滤器模式保存在我的RouteServiceProvider课堂上,这样它们就不会乱扔在我的路线文件中,然后很想听听你的意见。

于 2015-02-19T14:23:54.287 回答