laravel 5 实现模板主题功能
众所周知,laravel渲染模板是通过View::make()实现的,需要显式指定模板文件路径:
function index()
{
return View::make('index.index');
}
既然这样,我们就可以自己实现模板主题功能,我们只需要将模板文件放到一个主题名称对应的目录里就行,比如默认主题为 default 的话,我们就这样写:
function index()
{
return View::make('default.index.index');
}
自定义主题 custom :
function index()
{
return View::make('custom.index.index');
}
从配置文件中读取主题名:
function index()
{
return View::make(Config::get('app.theme','default').'.index.index');
}
这样基本就实现模板主题化的功能了,但还存在一个问题,那就是custom主题必须实现所有default主题的所有模板,否则会导致某些页面模板文件不存在报错,那么进一步优化:
function index()
{
$theme = Config::get('app.theme','default');
$tpl = $theme.'.index.index';
if (!View::exists($tpl)) {
$tpl = 'default.index.index';
}
return View::make($tpl);
}
就是在渲染模板之前,先检测模板文件是否存在,不存在的话则使用default主题中对应的模板。
这么多行代码,我们可以继续封装一下,这时候要用到Response对象了,我们知道 Response::view() 等同于 View::make(),而Response还有一个方法Response::macro()方法可以用来定义一个宏,我们可以把逻辑封装到宏里面:
Response::macro('render',function($path,$data=array()){
$theme = Config::get('app.theme','default');
$tpl = $theme.'.'.$path;
if (!View::exists($tpl)) {
$tpl = 'default.' . $path;
}
return Response::view($tpl,$data);
});
使用:
function index()
{
$bindings = array(
'title' => '首页'
);
return Response::render('index.index',$bindings);
}
需要注意的是传入模板的变量得通过Response::render的第二个参数。
今天的教程就先到这里吧,后续我们再来深入分析一下,希望大家能够喜欢。
相关推荐
-
跟我学Laravel之快速入门
安装 Laravel框架使用 Composer 执行安装和依赖管理.如果还没有安装的话,现在就开始 安装 Composer 吧. 安装Composer之后,你就可以通过命令行使用如下命令安装Laravel了: composer create-project laravel/laravel your-project-name 或者,你可以从 Github仓库 下载.接下来,在 安装Composer 之后,在项目根目录下执行 composer install 命令.该命令将会下载以及安装框架的依赖组
-
Laravel框架中扩展函数、扩展自定义类的方法
一.扩展自己的类 在app/ 下建立目录 libraries\class 然后myTest.php 类名格式 驼峰 myTest 复制代码 代码如下: <?php class myTest { public function test() { return '1asdasd111'; } } 在 app/start/global.php 复制代码 代码如下: ClassLoader::addDirectories(array( app_path().'/commands', app_path(
-
Laravel框架中实现使用阿里云ACE缓存服务
之前我写了一篇在 Laravel 4 框架中使用阿里云 OCS 缓存的文章,介绍了如何通过扩展 Laravel 4 来支持需要 SASL 认证的阿里云 OCS 缓存服务.有网友问我,ACE 的缓存怎么在 Laravel 4 中使用.我本来觉得应该可以完全用相同的办法,后来自己尝试的时候才发现,ACE 的缓存差别非常大.所以再写一篇,介绍一下如何在 Laravel 框架中使用阿里云 ACE 的缓存服务. 如何扩展 Laravel 的缓存驱动 在 Laravel 4 中使用 Cache::get($
-
Laravel框架表单验证详解
基础验证例子 复制代码 代码如下: $validator = Validator::make( array('name' => 'Dayle'), array('name' => 'required|min:5') ); 传递给 make 函数的第一个参数是待验证的数据,第二个参数是对该数据需要应用的验证规则. 多个验证规则可以通过 "|" 字符进行隔开,或者作为数组的一个单独的元素. 通过数组指定验证规则 复制代码 代码如下: $validator = Validator
-
Laravel 5框架学习之环境与配置
.env 文件是配置文件,包括数据库配置信息,查看 config->database.php ,connections 里面包含了所有数据库的配置,可以在 default 中选择要使用的数据库.在数据库配置中,有关 env('DB_HOST', 'localhost') 就是读取 .env 配置文件的信息.第二个参数是缺省参数. 我们使用 mysql 数据库,修改 .env: DB_HOST=localhost DB_DATABASE=laravel DB_USERNAME=root DB_PA
-
Laravel使用Caching缓存数据减轻数据库查询压力的方法
本文实例讲述了Laravel使用Caching缓存数据减轻数据库查询压力的方法.分享给大家供大家参考,具体如下: 昨天想把自己博客的首页做一下缓存,达到类似于生成静态页缓存的效果,在群里问了大家怎么做缓存,都挺忙的没多少回复,我就自己去看了看文档,发现了Caching这个部分,其实之前也有印象,但是没具体接触过,顾名思义,就是缓存了,那肯定和我的需求有点联系,我就认真看了看,发现的确是太强大了,经过很简单的几个步骤,我就改装好了首页,用firebug测试了一下,提高了几十毫秒解析时间,当然了有人
-
Laravel框架数据库CURD操作、连贯操作总结
一.Selects 检索表中的所有行 复制代码 代码如下: $users = DB::table('users')->get(); foreach ($users as $user) { var_dump($user->name); } 从表检索单个行 复制代码 代码如下: $user = DB::table('users')->where('name', 'John')->first(); var_dump($user->name); 检索单个列的行 复制代码 代码如下:
-
Laravel Memcached缓存驱动的配置与应用方法分析
本文实例讲述了Laravel Memcached缓存驱动的配置与应用方法.分享给大家供大家参考,具体如下: Memcached缓存配置在任何php环境下我们都可以配置使用来提升WEB的性能.对于大型网站(数据多,访问量大)而言,缓存系统是必备组件,其为减轻数据库负载.提高页面访问速度.提升系统性能立下汗马功劳.Laravel作为一个功能完善且强大的PHP框架,自然为缓存系统提供了支持.目前Laravle支持的缓存驱动包括文件.数组.数据库.APC.Memcached和Redis,并且为这些驱动提
-
PHP开发框架Laravel数据库操作方法总结
一.读/写连接 有时您可能希望使用一个SELECT语句的数据库连接,,另一个用于插入.更新和删除语句.Laravel使这微风,将始终使用正确的连接是否使用原始查询,查询生成器或雄辩的ORM. 如何读/写连接应该配置,让我们看看这个例子: 复制代码 代码如下: 'mysql' => array('read' => array('host' => '192.168.1.1'),'write' => array('host' => '196.168.1.2'),'driver' =
-
Laravel中扩展Memcached缓存驱动实现使用阿里云OCS缓存
Laravel是我最近用得非常多而且越用就越喜欢的一款PHP框架,由于没有向下兼容的历史包袱,完全面向对象的风格,借助 Facades 优雅的IoC Container 实现,采用 Composer进行包管理,可以方便地引入和使用开源社区里的优秀组件--总而言之,这是一款真正让你能够 "code happy" 的"巨匠级PHP开发框架". 在尝试把自己的 Laravel App 部署到阿里云的时候,遇到了一个问题: Laravel 支持 Memcached 缓存,阿
-
laravel安装和配置教程
系统环境需求 apache,nginx或者其他web服务器: laravel使用了PHP的一些强而有力的特性,所以需要在PHP5.3或者更高的版本上才能够执行: Laravel使用FileInfo library(http://php.net/manual/en/book.fileinfo.php)来检测文件的mime类型,这个库在PHP5.3中是默认含有的,但是在Windows中用户需要自己在php.ini中开启这个模块,如果不明白可以看看这里:http://php.net/manual/en
随机推荐
- JavaScript window.setTimeout() 的详细用法
- 服务器应用自动重新启动IIS批处理 原创
- 使用MongoDB分析Nginx日志的方法详解
- Java回调函数实例代码详解
- 简单谈谈Python中的几种常见的数据类型
- 一步一步学asp.net Ajax登录设计实现解析
- ASP.NET MVC5网站开发之业务逻辑层的架构和基本功能 (四)
- Python开发WebService系列教程之REST,web.py,eurasia,Django
- java eclipse 启动参数
- Android View移动的六种方法小结
- PHP、Nginx、Apache中禁止网页被iframe引用的方法
- JS实现点击上移下移LI行数据的方法
- 基于原生JS实现图片裁剪
- 从此不再惧怕URI编码 JavaScript及C# URI编码详解
- 30 个很棒的PHP开源CMS内容管理系统小结
- javascript 倒排序方法
- ASP.NET C#中Application的用法教程
- C#自定义简化cookie类实例
- Android中判断手机是否联网实例
- vue 项目中使用Loading组件的示例代码
其他
- python统计列表中出现次数最多的元素
- python 比较公司名称的相似度
- springboot配置文件中加日志打印sql
- linq sql 删除重复记录保留一条
- vue3 监听mapState 中数据变化
- github 提交代码 需要用户名和密码
- vue 初始化加载生成一个true数组
- 为啥if defined可以过滤重复行
- functools.partial 用法
- FigureCanvas 打开交互模式
- openpyxl 复制数据有效性
- python 车牌文字分割
- ref能触发同级组件的事件吗
- livechart Y轴数据较小零
- mysql 插入数据时覆盖
- C# selenium debug 地址
- alpine安装go语言
- plsql修改数据库的用户名密码
- 文字游戏小程序python
- android 程序包不存在 找不到符号