Laravel视图合成器

一、场景:

在一个公共视图中有一侧边栏的数据。每个页面都需要展示。不能在每一个展示页面都获取数据来渲染一次。

二、解决办法:

语法:

View::composer('模板地址',function($view){
      //实现的逻辑
});

加载模板的时候都会执行右边的函数

位置:

一般放在App\Providers\AppServiceProvider中;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *注册完之后调用
     * @return void
     */
    public function boot()
    {
        //mb4String 767/4
        Schema::defaultStringLength(191);
        //视图合成器 注入专题数据
        \View::composer('layouts.sidebar',function($view){
            $topics = \App\Http\Model\Topic::all();
            $view->with('topics',$topics);
        });
    }

    /**
     * Register any application services.
     *注册前调用
     * @return void
     */
    public function register()
    {
        //
    }
}

你可能感兴趣的:(Laravel视图合成器)