Php 访问包含的刀片模板中通配符laravel子域中的参数
我在laravel项目中有一个通配符子域定义,如下所示:Php 访问包含的刀片模板中通配符laravel子域中的参数,php,laravel,Php,Laravel,我在laravel项目中有一个通配符子域定义,如下所示: Route::group(['domain' => '{website}.' . config('app.url')], function () { Route::get('/', ['as' => 'wb-homepage', 'uses' => 'WebsiteController@homePage']); Route::get('/AdsAll', ['uses' => 'We
Route::group(['domain' => '{website}.' . config('app.url')], function () {
Route::get('/', ['as' => 'wb-homepage', 'uses' => 'WebsiteController@homePage']);
Route::get('/AdsAll', ['uses' => 'WebsiteController@AdsAll']);
});
在该路由组下定义的所有路由都包含一个header.blade.php,我想访问定义为子域的{website}参数的值
我认为可以访问该参数的方法之一是引导AppServiceProvider.php。我尝试了不同的方法,但根据我的经验,我无法使用它,因为:
任何服务提供者的boot和register方法在解析请求和已知请求参数之前都会被调用,这就是为什么您不能访问它们
现在我的问题是,在包含的刀片模板中访问网站参数的正确方法是什么?一种方法是使用全局中间件来访问此参数和所有视图中的数据
首先,要创建可以运行的中间件,请执行以下操作:
php artisan make:middleware ShareSiteSubdomain
然后在ShareSiteSubdomain中添加:
最后,转到app/Http/Kernel.php并将\app\Http\Middleware\ShareSiteSubdomain::类添加到$middlewareGroups数组中的web数组中
然后,您应该在所有视图中都有一个名为$WEBSET的变量。您使用的是什么版本的Laravel?我使用的是5.4.36如果我希望在特定刀片中使用该变量,该怎么办?@a.B.Developer您可以改为使用视图生成器。
public function handle($request, Closure $next)
{
view()->share('website', $request->route('website'));
return $next($request);
}