首頁 > php框架 > Laravel > 主體

Laravel 為公共模板賦值

步履不停
發布: 2019-06-24 18:12:38
原創
3020 人瀏覽過

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中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板