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 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里这么写

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

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

(0)

相关推荐

  • 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模板实体转义带来的坑

    问题 最近在Laravel项目中用到了百度编辑器,插入到数据库我保存的是原始的html标签代码,没有进行实体转义.然后在修改的时候,需要读取到数据库中的数据,进行回显,这时候竟然在编辑器里面显示html标签代码<p>123</p>,这让我很尴尬,因为以前在tp框架中也是这样写的,但是没有问题. 搜索之路 在知道问题之后,我就开始找百度了,因为一开始的时候我并不知道是框架的原因,我以为是百度编辑器版本的原因,然后收到了许多答案,都是围绕着htmlentities和html_entit

  • 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向公共模板赋值方法总结

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

  • 在Layui 的表格模板中,实现layer父页面和子页面传值交互的方法

    最近,在项目中使用到了layer.layer的弹层组件可以说是非常好用,layer 至今仍作为 layui 的代表作.在项目中,需要实现一个在表格里面点击操作,然后弹出layer层,将父层表格的行值传给子页面,子页面拿到值后,进行业务处理,从而实现真正的父子页面交互. 其实,官方文档都说的很清楚了. layui官方文档:http://layer.layui.com/ 使用版本:2.3.0 只是,需要我们耐心的读懂文档内容,然后根据自己的业务情况,实现自己想要的效果. 一.子页面获取父页面数据 子

  • 关于laravel模板中生成URL的几种模式总结

    1.通过url辅助函数(路由)生成: location.href = "{{url('user/index2')}}"; 或者: location.href = "{{url::to('user/index2')}}"; 2.通过别名(路由)生成,前提是在注册路由的时候要指定别名, 例如: Route::get('user/index2',['as' => 'user/index2', 'uses' => 'UserController@index1']

  • Laravel框架之blade模板新手入门教程及小技巧

    简介 Blade 是 Laravel 所提供的一个简单且强大的模板引擎.相较于其它知名的 PHP 模板引擎,Blade 并不会限制你必须得在视图中使用 PHP 代码.所有 Blade 视图都会被编译缓存成普通的 PHP 代码,一直到它们被更改为止.这代表 Blade 基本不会对你的应用程序生成负担. Blade 视图文件使用 .blade.php 做为扩展名,通常保存于 resources/views 文件夹内. 为什么要使用blade模板 容易理解,思路清晰 方便,直接可以在框架里使用,可以直

  • Laravel实现通过blade模板引擎渲染视图

    laravel提供了blade模板引擎用于视图的渲染,在blade中可以直接使用PHP代码,并且blade最终也会被编译为php缓存起来,只有在blade文件被修改后才会重新编译,这一点可以节省开销提高应用性能.blade文件.blade.php作为视图文件存放于laravel的resource/views目录下. 1.定义模板 blade定义模板页面同创建html页面一样,只不过在适当的位置通过@section或@yield来占位,当其它页面引用模板页时将内容填充到占位的位置即可 <html>

  • Laravel 实现在Blade模版中使用全局变量代替路径的例子

    在使用tp框架时,我们可以用常量来代替文件路径,如: <img class="style" src="__TMPL__/uploads/ad/{$item.config.shop_image}"> 我们只需要在配置文件中设置即可, TMPL_PARSE_STRING' => array( '__TMPL__' => __ROOT__.'/tpl', '__UPLOAD__' => __ROOT__."/Data/upload&

  • laravel+vue组合的项目中引入ueditor方式(打包成组件形式)

    前言:最近写东西需要用到ueditor,并且需要是在vue组件中引入. (本博客默认你已经配置了laravel+vue的项目环境,如果还没有配置好的的小伙伴,可以看看我的另一篇文章,链接: https://www.jb51.net/article/122369.htm) 1.下载editor 这个直接去ueditor的官网下载其PHP版本的就可以了,没什么好说的 2.移到项目目录中(主要讲如何放置配置文件和静态资源文件) 打开下载好的ueditor目录,如果版本没有错也没出什么问题,应该就会看到

  • 实例讲解JavaScript的Backbone.js框架中的View视图

    Backbone 中的 View 用来反映你 app 中 Model 的模样.它们会监听事件并作出相应的反应. 接下来的教程我不会告诉你如何把 Model 和 Collection 绑定到 View 上,而是主要讨论 View 是如何使用 javascript 模板库的,尤其是 Underscore.js's _.template. 这里我们使用 jQuery 来操作 DOM 元素,当然你也可以使用其他的库,例如 MooTools 或者 Sizzle,但是 Backbone 的官方文档推荐我们使

随机推荐