簡體   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