有没有办法将变量传递给具有中间件的视图?
我能够通过会话来做到这一点,但这并没有解决我的问题,所以我要求这个。
答案 0 :(得分:0)
您可以将变量合并到请求中,从控制器上的请求中读取它,然后将其传递给视图。
例如,在中间件中:
public function handle($request, Closure $next)
{
$foo = 'bar';
$request->merge(compact('foo'));
return $next($request);
}
在控制器上:
public function create(Request $request)
{
$foo = $request->foo;
return view('my.view', compact('foo'));
}
然后在视图上,您可以将其引用为,例如{{ $foo }}
。
答案 1 :(得分:0)
中间件用于修改请求。
如果每个视图都有一些动态数据,那么最好使用服务提供商而不是中间件。
例如,您可能在每个页面上都有一些元数据,并且每个视图都包含一个header.blade.php
,看起来像这样:
<head> <meta name="{{$meta_key}}" content="{{$meta_desc}}"> </head>
然后您可以创建一个service provider
public function boot()
{
view()->composer('view', function () {
// compute $meta_key and $meta_desc from slug
$view->with('meta_key', $meta_key)->with('meta_desc', $meta_desc);
});
}
您也可以从laracast
查看本教程答案 2 :(得分:0)
按要发送数据的路径替换composer中的“视图”
即如果要发送到partials文件夹中的header.blade.php,则将“ view”替换为“ partials.header”。
在引用@adam answer和Laracasts episode 25之后,以下代码对我有用:
\ app \ Providers \ AppServiceProvider.php
在 boot()函数中添加以下代码:-
view()->composer('partials.header', function ($view) {
//
$view->with('your_key', 'your_value');
});
现在,您的数据可以在 project_name \ resources \ views \ partials \ header.blade.php 中以
的形式访问{{$your_key}}
或
<?php echo $your_key; ?>
答案 3 :(得分:0)
使用以下代码,您可以轻松访问视图中的数据:
view()->share('my_variable', $variable);
现在您可以在视图中使用 {{$my_variable}}
。