7. Laravel5学习笔记:如何定义自己的视图组件

视图组件



视图组件就是在视图被渲染前,会调用的闭包或类方法。如果你想在每次渲染某些视图时绑定数据,视图组件可以把这样的程序逻辑组织在同一个地方。

对上面的话,理解如下:

  • 这个php代码运行的时间是在渲染视图之前
  • 使用这个组件应该用于每次渲染时,都要绑定数据的视图上。这样子就可以从控制器分离出数据绑定逻辑。

它很好的提现了 单一职责 ,对它的概念阐述 请看这里

使用



在laravel5的文档中已经说明了如何构建自己的视图组件。这里在重复一下。

  • 先构建一个视图组件:
<?php

namespace App\Http\ViewComposers;

use Illuminate\Contracts\View\View;

class ProfileComposer
{
    public function compose(View $view)
    {
        $view->withName(‘profile.test‘);
    }
}

相信大家可以看出代码位于哪一个目录下了,我就不多说了。

  • 打造自己的视图组件服务提供者
<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use View;

class ComposerServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap the application services.
     *
     * @return void
     */
    public function boot()
    {
        // 使用类来指定视图组件
        View::composer(‘profile‘, ‘App\Http\ViewComposers\ProfileComposer‘);
        // 使用闭包来指定视图组件
        /* View::composer(‘profile‘, function($view){
            $view->with(‘name‘, ‘laravel‘);
        }); */
    }
}

接下来,要记得把该服务提供者添加到 config/app.php 配置文件的 providers 数组中

  • 构建视图页面

    这里需要构建一个视图文件,文件的名称必须与注册时保持一致。这里我们的文件就该命名为:

    profile.blade.php 。大家可以尝试在该文件中访问变量 {{ $name }}

如果看到你设置的值,说明你成功了。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-06 07:17:18

7. Laravel5学习笔记:如何定义自己的视图组件的相关文章

angularjs 学习笔记 -----结构定义

1.  Module使用方法 var APP =angular.module('fontApp',['ngResource', 'ngRoute', 'ngSanitize']); APP为定义的别名,之后的调用都应尽量使用该别名 'fontApp' ng-app="fontApp" 新版本angular中route被分离出来,各个被使用的Providerdou需要在此处声明. 大型应用应该拆分模块来做,先定义一个服务模块,然后再加载它 angular.module('xmpl.ser

ASP.Net MVC开发基础学习笔记:三、Razor视图引擎、控制器与路由机制学习

一.天降神器“剃须刀” — Razor视图引擎 1.1 千呼万唤始出来的MVC3.0 在MVC3.0版本的时候,微软终于引入了第二种模板引擎:Razor.在这之前,我们一直在使用WebForm时代沿留下来的ASPX引擎或者第三方的NVelocity模板引擎. Razor在减少代码冗余.增强代码可读性和Visual Studio智能感知方面,都有着突出的优势.Razor一经推出就深受广大ASP.Net开发者的喜爱. 1.2 Razor的语法 (1)Razor文件类型:Razor支持两种文件类型,分

Mysql学习笔记(十一)临时表+视图

原文:Mysql学习笔记(十一)临时表+视图 学习内容: 临时表和视图的基本操作... 临时表与视图的使用范围... 1.临时表   临时表:临时表,想必大家都知道这个概念的存在...但是我们什么时候应该使用到临时表呢?当一个数据库存在着大量的数据的时候,我们想要获取到这个数据集合的一个子集,那么我们就可以使用临时表来保存我们想要的数据..然后对临时表进行操作就可以了...使用临时表必然是有原因的..使用临时表会加快数据库的查询性能.... create temporary table tmp_

angular学习笔记(十七)-路由和切换视图

本篇介绍angular中如何通过判断url的hash值来显示不同的视图模板,并使用不同的控制器: 下面,通过一个例子,来一步一步说明它的用法: 我们要做一个邮箱应用,打开的时候显示的是邮件列表: 然后点击邮件主题,可以查看该邮件的详细内容: 点击返回列表,再回到列表页 一. 创建index页面: <!DOCTYPE html> <html> <head> <title>14.1路由和视图切换</title> <meta charset=&q

[ExtJS学习笔记]第七节 Extjs的组件components及其模板事件方法学习

本文地址:http://blog.csdn.net/sushengmiyan/article/details/38487519 本文作者:sushengmiyan -------------------------------------------------------------资源链接----------------------------------------------------------------------- 翻译来源  Sencha Cmd官方网站: http://ww

ExtJS学习笔记:定义extjs类

定义类 Ext.define('Cookbook.Vehicle', { Manufacturer: 'Aston Martin', Model: 'Vanquish', getDetails: function(){ alert('I am an ' + this.Manufacturer + ' ' + this.Model); } }, function(){ Console.log('Cookbook.Vehicle class defined!'); }); 第一个参数是类名,第二个参

AngularJS1.X学习笔记10-自定义指令(下)

继续继续,学完这个部分就去吃饭.引用自由男人的话作为本文的开始:"默认情况下,链接函数被传入了控制器的作用域,而该控制器管理着的视图包含了指令所应用到的元素".果然像是绕口令,还是看看你的例子比较好. 一.在一个控制器中应用同一指令 <!DOCTYPE html> <html lang="en" ng-app="myApp"> <head> <meta charset="UTF-8"&

[学习笔记]viewport定义,弹性布局,响应式布局

一,移动端宽度设置viewport视图窗口,<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no">,视窗宽度=设备宽度,默认缩放=1,不允许用户缩放. 二,flexbox,弹性盒子模型:1,在元素的css中添加display:-webkit-flex就可以转换成弹性盒模型了,然后在多个子元素的CSS中添加flex:1/2/3,就可以让子元素按

ExtJS学习笔记:定义extjs类别

类的定义 Ext.define('Cookbook.Vehicle', { Manufacturer: 'Aston Martin', Model: 'Vanquish', getDetails: function(){ alert('I am an ' + this.Manufacturer + ' ' + this.Model); } }, function(){ Console.log('Cookbook.Vehicle class defined!'); }); 第一个參数是类名.第二个