Laravel子域路由集route()助手的全局参数

Laravel子域路由集route()助手的全局参数,laravel,laravel-5,wildcard-subdomain,Laravel,Laravel 5,Wildcard Subdomain,我已使用以下web.phproute在我的应用程序(使用Laravel 5.4)上设置了子域路由: Route::domain('{company}.myapp.localhost')->group(function () { // Locations Route::resource('/locations' , 'LocationController'); // Services Route::resource('/services' , 'ServiceControl

我已使用以下
web.php
route在我的应用程序(使用Laravel 5.4)上设置了子域路由:

Route::domain('{company}.myapp.localhost')->group(function () {
  // Locations
  Route::resource('/locations' , 'LocationController');

  // Services
  Route::resource('/services' , 'ServiceController');
});
但是,当my
show
edit
端点需要传递ID时,使用正常的
路由('services.show')
helper会导致
ErrorException
声明
缺少[route:services.create][URI:services/create]所需的参数。

我理解这是必要的,但由于
公司
在登录时与用户关联(并且在子域中),我不想为每个视图传递此消息。我想在全球层面上进行设置

为了避免重复查询,我考虑将其存储在会话中(在:


这很好,但我想知道是否可以将其作为中间件或其他东西传递到路由。这里的最佳解决方案是什么?

建议:删除资源名称前的斜杠。
resource
方法将生成以下URI:

/services/{service}
因此,您应该这样定义您的路线:

Route::domain('{company}.myapp.localhost')->group(function () {
    // Locations
    Route::resource('locations' , 'LocationController');

    // Services
    Route::resource('services' , 'ServiceController', ['only' => ['index', 'store']]);
    Route::get('services');
});

建议:删除资源名称前的斜杠。
resource
方法将生成以下URI:

/services/{service}
因此,您应该这样定义您的路线:

Route::domain('{company}.myapp.localhost')->group(function () {
    // Locations
    Route::resource('locations' , 'LocationController');

    // Services
    Route::resource('services' , 'ServiceController', ['only' => ['index', 'store']]);
    Route::get('services');
});

我今天遇到了这个问题,我在源代码中找到了一个url生成器上的
defaults
方法,允许您设置全局默认路由参数,如下所示:

app('url')->默认值(['yourGlobalRouteParameter'=>$value]);


这会将您指定的任何值合并到路由url生成器要使用的全局默认参数中。

我今天遇到了这个问题,我翻了翻源代码,在url生成器上找到了一个
defaults
方法,允许您设置全局默认路由参数,如下所示:

app('url')->默认值(['yourGlobalRouteParameter'=>$value]);


这将合并到任何值中您可以在全局默认参数中指定路由url生成器要使用的参数。

为什么不传递参数?我知道我需要传递参数,我只是不确定全局执行此操作的最佳实现。将其保存到会话可以在控制器中检索此参数,但由于我需要该参数,因此我认为应该在任何地方传递该参数d这是一种更好的方法,这样它就已经配置好了,而不必在每个控制器中重新声明。我对Laravel比较陌生,所以我不确定最佳实践……为什么不传递参数?我知道我需要传递参数,我只是不确定全局执行此操作的最佳实现。将其保存到会话中会使这一点变得更容易可在控制器内检索,但由于我在任何地方都需要param,因此感觉应该有更好的方法来执行此操作,因此它已经配置好,而不必在每个控制器中重新声明。我对Laravel比较陌生,因此我不确定最佳做法……这仍然会产生相同的异常错误……我仍然需要设置为
route()
helper()调用第二个参数(调用whatever)…似乎需要它来填充域路由中的
{company}
通配符,这是有意义的。我希望在登录时设置它(如我的问题中所详细说明的)并全局传递它。为了避免对每个链接执行类似操作:
{route('locations.index',Session::get('company')['name'])}
这仍然会产生相同的异常错误…我仍然需要为
route()
helper设置第二个参数(称为whatever)…似乎需要它来填充域路由中的
{company}
通配符,这是有意义的。我希望在登录时设置它(如我的问题中所述)并全局传递。为了避免对每个链接执行类似操作:
{{route('locations.index',Session::get('company')['name'])}