Laravel将变量偏离视图部分到主刀片或部分之间

时间:2018-03-08 05:25:22

标签: php laravel variables laravel-5 laravel-blade

我有一个Laravel 5.5应用程序,它通常使用视图刀片,没什么特别的。我的刀片是一个很长的数据表,我将组部分(项目类别)拆分成他们自己的部分,以便更好地管理代码。

但是,我无法找到一种方法将可变数据从部分传递回主刀片,甚至部分传递。变量的范围绑定在partials中,我需要显示一个页面总计,它汇总了各个partials(sections)的小计。我确实尝试过使用

View::share('portfolio_total', 100);
在AppServiceProvider中

无济于事。我可以设置一个值(如所示的100)在主刀片中保持不变,但不会在部分中获取该变量中设置的值。更改部分内部的变量值不会更新主刀片可用的值。我已经对此进行了广泛的搜索,并且有许多将值传递给部分的例子,但没有退出。

是否有一个Laravel技巧来定义全局变量的等价物,这些变量可以在包含的部分刀片中设置其值,并将该值传递给另一个部分刀片,或者传送到主刀片?

提前致谢。

2 个答案:

答案 0 :(得分:1)

  

我找不到一种方法将部分变量数据传回主刀片,甚至部分之间。

那是因为这是绝对不好的做法。因此,框架不允许(没有滥用)。

为什么?

在MVC世界(Laravel实现)中,视图负责显示数据。

如果您正在计算视图中的任何内容(部分或非部分),那么这意味着您将视图负责控制器和/或模型。当然这不好。

然后是什么?

想法是在使用视图之前计算所需的一切。两个选项:

  • 如果您的view / partial仅由单个控制器方法使用,只需像往常一样将数据传递给视图。
  • 如果您的view / partial在各个地方使用,请设置一个ViewComposer,每次使用该部分时都能传递计算数据。

答案 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 }}