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'); //自己定义的方法

这里就执行foobar函数了

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

<?phpnamespace 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);    });
(0)

相关推荐

  • Laravel向公共模板赋值方法总结

    开发过程中许多时候都会向公共模板赋值,比如顶部导航栏,页面底部等等,不可能在每个控制器中都赋值一遍. Laravel 中解决办法如下: 修改 App\Providers\AppServiceProvider 在boot方法中添加 View()->composer('common.header',function ($view){ //common.header 对应Blade模板 $view->with('key', 'value'); }); 也可以向所有模板中赋值 View()->s

  • laravel框架模板之公共模板、继承、包含实现方法分析

    本文实例讲述了laravel框架模板之公共模板.继承.包含实现方法.分享给大家供大家参考,具体如下: 简介: 利用laravel框架开发后台管理系统或web站点,即嵌入式开发,所以php开发人员要自己整合模板. 本篇举例后台管理系统 模板路径:/resources/views/admin 1.建立公共目录 /resources/views/admin/layouts/ layouts下面分别建立如下几个模板(可自行减少或增多) /header.blade.php  头部 /main.blade.

  • Laravel 实现Controller向blade前台模板赋值的四种方式小结

    如下所示: <?php namespace App\Http\Controllers; use Illuminate\Http\Request; class TestController extends Controller { public function show(){ return view('show',['name'=>'asdfasdfasdfa']); //方法一 是把数组里的键值对赋值过去了,blade模板里用键名来取,如{{$name}} {{$gender}} //方法二

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

    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

  • laravel 验证错误信息到 blade模板的方法

    后台代码: /** * POST * admin/cate * 添加 */ public function store(Request $request) { $input = $request->all(); $rule = [ 'name' => 'required', ]; $message = [ 'name.required' => 'name not allow null' ]; $validate = Validator::make($input, $rule, $mess

  • thinkphp模板赋值与替换实例简述

    本文实例讲述了thinkphp模板赋值与替换方法.分享给大家供大家参考.具体实现方法如下: 1. 模板中的赋值方法: 复制代码 代码如下: $this->assign('name','我们');//第一种赋值方法  $this->name='jb51';//第二种动态赋值方法  $this->display(); 2. 模板替换方法: PUBLIC__:会被替换成当前网站的公共目录,通常是 /thinkphp/Public/;在Public中建立Css文件夹,建立basic.css文件

  • yii,CI,yaf框架+smarty模板使用方法

    本文实例讲述了yii,CI,yaf框架+smarty模板使用方法.分享给大家供大家参考,具体如下: 最近折腾了框架的性能测试,其中需要测试各个模板跟smarty配合的性能,所以折腾了一桶,现总结一下.之前已经写过kohana框架+smarty模板,这里不再重复了. 一.yii框架+smarty模板 yii是覆盖了viewRenderer组件. 1.1,下载yii框架并解压,下载smarty框架并解压,将smarty/libs文件夹拷到yii框架application/protected/vend

  • Laravel框架创建路由的方法详解

    本文实例讲述了Laravel框架创建路由的方法.分享给大家供大家参考,具体如下: 我这里使用的Laravel版本是5.6,路由位置在routes/web.php中,所以我们在这个文件中添加我们想要添加的路由. 1.基础路由 //get请求,结果如下图 Route::get('basic1',function (){ return 'Hello World'; }); //post请求,这里不展示结果图 Route::post('basic2',function (){ return 'Post'

  • 详解laravel中blade模板带条件分页

    Blade模板简介 问: 什么是Blade模板? 答: Blade模板是Laravel提供一个既简单又强大的模板引擎: 和其他流行的PHP模板引擎不一样,他并不限制你在视图里使用原生PHP代码: 所有Blade视图页面都将被编译成原生的PHP代码并缓存起来,除非你的模板文件被修改,否则不会重新编译. 而这些都意味着Blade不会给我们增加任何负担. 在其他框架中,分页可能是件非常痛苦的事,Laravel 让这件事变得简单.易于上手.Laravel 的分页器与查询构建器和 Eloquent ORM

  • thinkphp5.1框架模板赋值与变量输出示例

    本文实例讲述了thinkphp5.1框架模板赋值与变量输出.分享给大家供大家参考,具体如下: Demo.php namespace app\index\controller; use think\Controller; use think\facade\View; class Demo extends Controller { public function test1() { //直接将内容输出到页面,不通过模板 $con = '<h3 style="color:red">

随机推荐