Php Laravel 5.6从中间件将变量传递到视图
有没有办法通过中间件将变量传递给视图?Php Laravel 5.6从中间件将变量传递到视图,php,laravel,laravel-blade,Php,Laravel,Laravel Blade,有没有办法通过中间件将变量传递给视图? 我可以使用会话来执行此操作,但这并没有解决我的问题,因此我请求执行此操作。您可以将变量合并到请求中,从控制器上的请求读取变量,然后将其传递到视图 例如,在中间件中: 公共函数句柄($request,Closure$next) { $foo='bar'; $request->merge(compact('foo')); 返回$next($request); } 在控制器上: public function create(Request $request)
我可以使用会话来执行此操作,但这并没有解决我的问题,因此我请求执行此操作。您可以将变量合并到请求中,从控制器上的请求读取变量,然后将其传递到视图 例如,在中间件中:
公共函数句柄($request,Closure$next)
{
$foo='bar';
$request->merge(compact('foo'));
返回$next($request);
}
在控制器上:
public function create(Request $request)
{
$foo = $request->foo;
return view('my.view', compact('foo'));
}
然后在视图上,您可以引用它,例如,
{{$foo}
中间件用于修改请求
如果您有一些用于每个视图的动态数据,那么最好使用服务提供者而不是中间件
例如,您可能在每个页面上都有一些元数据,每个视图都包含一个header.blade.php
,它可能如下所示:
<head> <meta name="{{$meta_key}}" content="{{$meta_desc}}"> </head>
您也可以通过将composer中的“视图”替换为要发送数据的路径来检查本教程 i、 e.如果您想发送到partials文件夹中的header.blade.php,则将“视图”替换为“partials.header” 在为我参考并遵循以下代码后: \app\Providers\AppServiceProvider.php 在boot()函数中添加以下代码:-
view()->composer('partials.header', function ($view) {
//
$view->with('your_key', 'your_value');
});
现在,您的数据可以在项目\u名称\resources\views\partials\header.blade.php中找到
{{$your_key}}
或
你的要求是什么?你想在所有视图中共享任何共同的价值吗?不是全部,只是其中的一部分。不可能!您甚至无法从中间件返回视图。因此,如果可能,您可以使用会话。如果我想将需要请求数据库和memcached的动态数据添加到所有视图,我应该使用中间件还是服务提供商?@shintaroid service provider。谢谢兄弟!顺便问一下,在左边的问题中有一些答案建议使用中间件(如果我没有误解这个问题的话),您认为中间件也是一种解决方案吗?
{{$your_key}}
<?php echo $your_key; ?>