首頁  >  文章  >  php框架  >  Laravel 為公共模板賦值

Laravel 為公共模板賦值

步履不停
步履不停原創
2019-06-24 18:12:383002瀏覽

Laravel 為公共模板賦值

開發過程中許多時候都會向公共模板賦值,例如頂部導覽欄,頁面底部等等,不可能在每個控制器中都賦值一遍。

Laravel 中解決方法如下:
修改

App\Providers\AppServiceProvider

在boot方法中加入

View()->composer('common.header',function ($view){ //common.header 對應Blade模板
         $view->with('key', 'value');
   });

也可以將值賦值給所有範本

 View()->share('key', 'value');

=====================================

view composers 與視圖有關,用在一個service provider 的boot()函數裡,就是讓一個view加載的時候,由於view composer的作用,去調用某個函數傳個參啊啥的。

1,建立service provider

php artisan make:provider ComposerServiceProvider

##再把ComposerServiceProvider加到

config /app.php裡面

2,寫view composer

public function boot()
    {
        view()->composer(
            'app', //模板名
            'App\Http\ViewComposers\MovieComposer'  //方法名或者类中的方法
        );
    }
意思是一旦載入app.blade.php,就執行

App\Http \ViewComposers\MovieComposer裡的composer函數(這裡之所以執行composer函數是預設的),如果你想換一個就

##view()-> composer('app','App\Http\ViewComposers\MovieComposer

@foobar');<a href="https://my.oschina.net/u/862816" class="referer" target="_blank"> //自己定義的方法</a>##這裡就執行foobar函數了

App\Http\ViewComposers\MovieComposer.php

裡這麼寫

<?php

namespace App\Http\ViewComposers;

use Illuminate\View\View;//**记得引入这个啊(因为在composer函数参数里使用了View类)**

class MovieComposer
{
    public $movieList = [];
    public function __construct()
    {
        $this->movieList = [
            'Shawshank redemption',
            'Forrest Gump',
        ];
    }
    public function compose(View $view)
    {
        $view->with('latestMovie');
    }
}
3,其他

#當所有模板都要,用*正規表示式

view()->composer('*', function (View $view) {
    //logic goes here
});
想要指定多個view使用,用數組包起來

view()->composer(['nav', 'footer'],'App\Http\ViewComposers\MovieComposer');
或者
 view()->composer(['admin.admin'], function ($view){
            $column =  $this->object_array(DB::table('column')->get());
            foreach($column as $k=>$v){
                $chid = explode(',',$v['childid']);
                foreach($chid as $value){
                    $column[$k]['chname'][] =  $this->object_array(DB::table('column_child')->where('id',$value)->first());
                }
            }
            $view->with('columns',$column);
        });
更多PHP相關技術文章,請造訪PHP教學欄位進行學習!

以上是Laravel 為公共模板賦值的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn