我正在尝试这样做,以便我可以让一个组内的所有路由自动使用域参数,而不必在视图和诸如此类中指定它。这是我正在寻找的一个例子。
路由组代码:
Route::group(['domain' => '{tenant_domain}.myapp.com', 'middleware' => 'tenant'], function () {
tenant
中间件句柄:
public function handle($request, $next)
{
session(['tenant_domain' => $request->route('tenant_domain')]);
return $next($request);
}
因此,不必在我的所有视图中使用此代码:
{{ route('login', ['tenant_domain' => session('tenant_domain')]) }}
我只想使用:
{{ route('login') }}
然后在boot()
的{{1}}方法中,有类似的内容:
RouteServiceProvider
我该怎么做才能正常运作?
答案 0 :(得分:0)
不确定是否自动将其绑定到路线。但是,您可以覆盖所有Laravel助手,因为在定义之前检查它们是否存在:
if (! function_exists('route')) { //etc }}
所以你可以重写路由功能(最初位于Illuminate/Foundation/helpers.php
中,如下所示:
/**
* Generate the URL to a named route.
*
* @param string $name
* @param array $parameters
* @param bool $absolute
* @return string
*/
function route($name, $parameters = [], $absolute = true)
{
if (session()->has('tenant_domain'))) {
$parameters = array_prepend($parameters, session()->get('tenant_domain'));
}
return app('url')->route($name, $parameters, $absolute);
}
您可以在this thread中找到如何添加自定义帮助程序。