我有一个简单的应用程序与RouteServiceProvider中的组..
// Web routes
protected function mapWebRoutes()
{
Route::group(['domain' => 'example.com']), function()
{
Route::middleware('web')
->namespace($this->namespace);
->group(base_path('routes/web.php'));
});
// Match any other domains or subdomains
Route::group(['domain' => '{domain}'], function()
{
Route::middleware('web')
->namespace($this->namespace)
->group(base_path('routes/org.php'));
});
}
在routes/web.php
我可以称Auth::routes();
罚款;
但在routes/org.php
我从我的视图中得到一个缺少必需的参数,需要命名的auth路由(默认为laravel)
“缺少[Route:login] [URI:login]所需的参数。(查看:... / resources / views / layouts / loginmenu.blade.php)(查看:..”
问题不是Auth :: routes函数,而是{domain}通配符没有在路由中设置域(因为它没有通配符)
要使用默认的auth路由命名约定,必须更新视图以在名称旁边包含domain参数。
例:
{{ route('login') }}
需要是
{{ route('login', ['domain'=>$domain]) }}
当然,您必须在视图中使用Domain变量。最简单的方法(而不是像疯子那样在控制器周围传递它只是简单地与视图共享域变量。
在我的Controller的构造函数中的中间件中,我调用:
view()->share('domain', $domain);