laravel 实现向公共模板中传值 (view composer)

吾爱主题 阅读:138 2021-09-09 16:28:00 评论:0

view composers 与视图有关,用在一个service provider 的boot()函数里,就是让一个view加载的时候,由于view composer的作用,去调用某个函数传个参啊啥的。

1,创建service provider

?
1 php artisan make:provider ComposerServiceProvider

再把ComposerServiceProvider加到config/app.php里面

2,写view composer

?
1 2 3 4 5 6 7 public function boot()   {    view()->composer(     'app' , //模板名     'App\Http\ViewComposers\MovieComposer' //方法名或者类中的方法    );   }

意思是一旦加载app.blade.php,就执行App\Http\ViewComposers\MovieComposer里的composer函数(这里之所以执行composer函数是默认的),如果你想换一个就

?
1 view()->composer( 'app' , 'App\Http\ViewComposers\MovieComposer@foobar' ); //自己定义的方法

这里就执行foobar函数了

在App\Http\ViewComposers\MovieComposer.php里这么写

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 <?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,其他

当所有模板都要,用*正则表达式

?
1 2 3 view()->composer( '*' , function (View $view ) {   //logic goes here });

想要指定多个view使用,用数组包起来

?
1 view()->composer([ 'nav' , 'footer' ], 'App\Http\ViewComposers\MovieComposer' );

或者

?
1 2 3 4 5 6 7 8 9 10 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 );   });

以上这篇laravel 实现向公共模板中传值 (view composer)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/qq_26282869/article/details/80759884

可以去百度分享获取分享代码输入这里。
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

【腾讯云】云服务器产品特惠热卖中
搜索
标签列表
    关注我们

    了解等多精彩内容