Php Laravel将特定参数传递给所有视图中的所有管线
我需要向所有视图传递一个子域名,这样当它们生成带有Php Laravel将特定参数传递给所有视图中的所有管线,php,laravel,Php,Laravel,我需要向所有视图传递一个子域名,这样当它们生成带有route('namedLote')的路由时,用户将在同一个子域中结束 我最终创建了一个ViewServiceProvider,它注册了一个从请求中获取子域的文件,如下所示: use Illuminate\Support\Facades\View as FView; use Illuminate\View\View; class ViewServiceProvider extends ServiceProvider {
route('namedLote')
的路由时,用户将在同一个子域中结束
我最终创建了一个ViewServiceProvider
,它注册了一个从请求中获取子域的文件,如下所示:
use Illuminate\Support\Facades\View as FView;
use Illuminate\View\View;
class ViewServiceProvider extends ServiceProvider {
FView::composer('*', function(View $view){
$view->with('subdomain', request()->route()->subdomain);
});
}
通过这种方式,子域变量将每次传递到每个单视图,这要归功于中所述的'*'
然后,当我需要在任何视图中生成任何路由时,我将始终必须像这样通过子域,并且路由将正确生成
{{ route('signInPage', ['subdomain' => $subdomain]) }}
那么,在laravel中是否有什么东西(如
后视图处理)可以让我自动连接到子域中,这样我就不必现在修改每个视图中的每个路由生成?URL生成器可以采用默认值,这样在生成URL时就不必传递路由参数:
URL::defaults(['subdomain' => ....]);
您可以创建一个路由中间件,从请求中获取子域
参数并设置此默认值
这听起来比我做的还要好,我会读一读,试试看。谢谢没问题,如果文档中的示例还不够,我可以提供一些代码,祝你好运:)我现在只有一个问题,因为中间件中的某些原因,我将调用此URL::defaults,对于request()->route()
,我得到null,因此,如果试图找出我是否做错了什么,或者如何从urli获取子域,我将使其成为路由中间件,并将其应用到路由所在的任何组中。。您还可以使用$request->route('subdomain')
尝试检索参数。。。另外,您使用的是什么版本的Laravel?我最终将其添加到应用程序的路由中间件“web”组中,这样它将自动应用于web.php中定义的所有路由