Laravel 没有为域密钥触发路由服务提供商

Laravel route service provider not triggered for domain key

我正在创建一个 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();
    });
}

然而,这些似乎并没有真正被触发。我知道这一点,因为我可以在 bind 调用中放入类似 dd('here?') 的内容,并且它永远不会被触发。我还可以将我的 account 模式过滤器减少到 [0-9]+ 之类的东西,如果我在子域中包含字母,它仍然会被匹配。

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

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

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

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

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