搜尋

首頁  >  問答  >  主體

laravel 如果透過父類別層操作 將參數 傳遞到 Blade頁面佈局中

layout中使用到的變量,如果從控制器傳參,需要每個視圖都重複操作!
如何解決一次運算後,將結果傳遞給layout中,供所有檢視使用(不想在layout檢視中出現業務代碼)。

eg:
1. 權限管理,依照不同的用戶,設定不同的選單!
2. 選單中的動態數字,例如 【當日訂單(50)】,那個50需要所有的控制器取得資料後,再傳遞給視圖!

阿神阿神2819 天前435

全部回覆(3)我來回復

  • 迷茫

    迷茫2017-05-16 16:58:01

    有兩種方法可以解決:

    第一:傳統的ViewComposerProvider

    class NavViewComposerProvider extends ServiceProvider {
    
    public function boot(){
        view()->composer('partials.nav', function ($view) {
    
            $view->with('userAtLayout', User::find(Auth::user()->id));
            //根据自己的需求改呗
    
        });
      }
    }
    

    第二,Laravel 5.1新特性@inject:

    @inject('var','Class')
    // var 变量名 Class绑定的类名
    
    

    例如你可以這樣:

    @inject('nav','App\SiteNav')
    
    

    在SiteNav中查詢資料就可以了。

    題外話:認真看文檔,可以解決你越到的80%的問題。

    Happy Hacking

    回覆
    0
  • 巴扎黑

    巴扎黑2017-05-16 16:58:01

    雷雷

    回覆
    0
  • PHPz

    PHPz2017-05-16 16:58:01

    樓上說的方法都不可靠,取得不了當前url參數來傳入你的函數中的

    回覆
    0
  • 取消回覆