未为域密钥触发Laravel路由服务提供程序
我正在创建一个SaaS应用程序(谁不是?),和大多数SaaS应用程序一样,我采用了考虑子域的方法。我的路由文件如下所示:未为域密钥触发Laravel路由服务提供程序,laravel,routing,laravel-5,service-provider,Laravel,Routing,Laravel 5,Service Provider,我正在创建一个SaaS应用程序(谁不是?),和大多数SaaS应用程序一样,我采用了考虑子域的方法。我的路由文件如下所示: $router->group(['domain' => '{account}.example.com'], function($router) { $router->get('/', function() { return response('Hello, world.'); }); }); 然后,我决定在我的Rou
$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?')
的内容,而且它从未被触发。我还可以将我的帐户
模式过滤器减少为类似[0-9]+
的内容,如果我在子域中包含字母,它仍然会匹配
我做错了什么?如何让路由模式和绑定在路由组的
域
键中的变量上工作?将所有绑定移动到映射
方法(而不是引导
)中,模式过滤器需要进入路由组定义内部,如下所示:
$router->group(['domain' => '{account}.example.com'], function($router)
{
$router->pattern('account', '[a-z0-9]+');
$router->get('/', function()
{
return response('Hello, world.');
});
});
这并不理想,因此任何人都知道如何在我的
RouteServiceProvider
类中保留过滤模式,这样它们就不会乱放在我的routes文件中,那么我很想听听您的意见。提供商是否加载在config/app.php
?@ceejayoz是的。它只是一个标准的Laravel应用程序,我没有删除默认的RouteServiceProvider
。