繁体   English   中英

Laravel将变量从视线传递到部分主刀片或部分之间

[英]Laravel passing variable out of view partial to main blade, or between partials

我有一个Laravel 5.5应用程序,该应用程序通常使用视图刀片,没有花哨的地方。 我的刀片是一长串数据,我将分组节(项目类别)分成自己的部分,以更好地管理代码。

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

View::share('portfolio_total', 100);

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

是否有Laravel技巧来定义等效的全局变量,这些变量可以在包含的部分刀片中设置其值,然后将该值携带到另一个部分刀片中,或携带到主刀片中?

提前致谢。

我找不到将变量数据从局部传递回主刀片甚至在局部之间传递的方法。

那是因为这是绝对的坏习惯。 因此,该框架不允许这样做(没有滥用)。

为什么?

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

如果要在视图中计算任何内容(无论是否是局部视图),则意味着您要赋予视图控制器和/或模型的责任。 这当然不好。

那呢

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

  • 如果您的视图/部分视图仅由单个控制器方法使用,则只需照常将数据传递到视图即可。
  • 如果您的视图/局部视图在各个地方都使用过,请设置一个ViewComposer,它将在每次使用局部视图时传递计算的数据。

我通常会执行以下操作。

在我的控制器上,要返回数据,请执行以下操作:

    $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 }}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM