我有一个Laravel 5.5应用程序,它通常使用视图刀片,没什么特别的。我的刀片是一个很长的数据表,我将组部分(项目类别)拆分成他们自己的部分,以便更好地管理代码。
但是,我无法找到一种方法将可变数据从部分传递回主刀片,甚至部分传递。变量的范围绑定在partials中,我需要显示一个页面总计,它汇总了各个partials(sections)的小计。我确实尝试过使用
View::share('portfolio_total', 100);
在AppServiceProvider中无济于事。我可以设置一个值(如所示的100)在主刀片中保持不变,但不会在部分中获取该变量中设置的值。更改部分内部的变量值不会更新主刀片可用的值。我已经对此进行了广泛的搜索,并且有许多将值传递给部分的例子,但没有退出。
是否有一个Laravel技巧来定义全局变量的等价物,这些变量可以在包含的部分刀片中设置其值,并将该值传递给另一个部分刀片,或者传送到主刀片?
提前致谢。
答案 0 :(得分:1)
我找不到一种方法将部分变量数据传回主刀片,甚至部分之间。
那是因为这是绝对不好的做法。因此,框架不允许(没有滥用)。
在MVC世界(Laravel实现)中,视图负责显示数据。
如果您正在计算视图中的任何内容(部分或非部分),那么这意味着您将视图负责控制器和/或模型。当然这不好。
想法是在使用视图之前计算所需的一切。两个选项:
答案 1 :(得分:0)
我通常做的是以下内容。
在我的控制器上,为了返回数据,我这样做:
$data = [];
$data['dummyData'] = Dummy::all();
$data['extraData'] = 'Extra string';
return view('myroute.index', array('data' => $data));
然后在我的每个视图(视图和部分视图)
@php
$dummy = $data['dummyData'];
$extra = $data['extraData'];
@endphp
然后我可以像使用任何其他变量一样使用刀片中的变量:{{ $extra }}