Php Laravel将变量传递到主叶片部分或部分之间的视野之外

Php Laravel将变量传递到主叶片部分或部分之间的视野之外,php,laravel,variables,laravel-5,laravel-blade,Php,Laravel,Variables,Laravel 5,Laravel Blade,我有一个Laravel5.5应用程序,传统上使用视图刀片,没有什么特别之处。我的blade是一个很长的数据表,我将组部分(项目类别)拆分为它们自己的部分,以便更好地管理代码 但是,我找不到一种方法将变量数据从分区传回主刀片,甚至在分区之间。变量的范围被绑定在各个部分中,我需要显示一个页面总计,该页面汇总了各个部分(部分)的小计。我确实试过使用 View::share('portfolio_total', 100); 在AppServiceProvider中,则无效。我可以设置一个值(如图所示的

我有一个Laravel5.5应用程序,传统上使用视图刀片,没有什么特别之处。我的blade是一个很长的数据表,我将组部分(项目类别)拆分为它们自己的部分,以便更好地管理代码

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

View::share('portfolio_total', 100);
在AppServiceProvider中,则无效。我可以设置一个值(如图所示的100),该值在主刀片中保持不变,但不会在部分中拾取该变量中设置的值。更改partial中的变量值不会更新主刀片可用的值。我已经对此进行了广泛的搜索,有许多将值传递到分部的示例,但没有返回

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


提前谢谢。

我通常会做以下几件事

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

    $data = [];
    $data['dummyData'] = Dummy::all();
    $data['extraData'] = 'Extra string';
    return view('myroute.index', array('data' => $data));
然后在我的每个观点上(观点和部分)

然后我可以像其他变量一样使用blade中的变量:
{{{$extra}

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

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

为什么? 在MVC世界中(Laravel实现),视图负责显示数据

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

然后呢? 这个想法是在使用视图之前计算所需的一切。两种选择:

  • 如果视图/局部仅由单个控制器方法使用,只需像往常一样将数据传递给视图即可
  • 如果视图/局部在多个位置使用,请设置ViewComposer,它将能够在每次使用该局部时传递计算数据

不应将变量传递给partials,而应将变量传递给partials的父级,在父级中包含partials而不是主刀片文件。我添加到我的控制器:`$data=[]$数据[‘货币总额’]=0$数据[‘个人联合总数’]=0$数据['sum_real_assets']=0$数据['portfolio_total']=0;返回视图('myHostView',数组('data'=>$data));`以及每个部分和“主机”刀片:
@php$monetary_joint_total=$data['monetary_joint_total']$个人联名总数=$data[“个人联名总数”]$sum_real_assets=$data['sum_real_assets']$投资组合总额=$data[‘投资组合总额’]@endphp
但是仍然没有{{dd($monetary_joint_total)}}你能在评论中发布你用来调用partial的代码吗?谢谢Vincent,当然你是对的,这就是我现在为解决我的问题所做的。很好。现在,我在控制器中计算这些总数,并将值堆栈中的结果传递给刀片服务器。我只是希望,当我的blade@foreach循环中有递增的总数时,我可以简单地添加这些变量来显示我的总数。由于Laravel在视图/刀片中提供了如此多的灵活性,因此只需添加变量就显得如此接近和快速。如果我没有使用partials的话,这个问题就会解决了。再次感谢你的帮助。我不认为这是“糟糕的做法”,因为它“不是MVC”。相反,这是一种糟糕的做法,因为如果子级别刀片引入或更改外部刀片中变量的值,则极有可能导致错误。
@php
  $dummy = $data['dummyData'];
  $extra = $data['extraData'];
@endphp