laravel 5 实现模板主题功能

 更新时间:2015年03月02日 14:29:16   投稿:hebedich  
很多cms里都有模板主题功能,我们可以通过一个配置切换主题,这个功能在laravel下如何实现呢?今天我们就来探讨下这个问题。

众所周知,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的第二个参数。

今天的教程就先到这里吧,后续我们再来深入分析一下,希望大家能够喜欢。

相关文章

  • php通过GD库实现验证码功能

    php通过GD库实现验证码功能

    这篇文章主要介绍了php通过GD库实现验证码功能,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-07-07
  • php模板原理讲解

    php模板原理讲解

    php各种MVC框架采用页面和代码分离,通过模板将变量赋值到页面,以及模板引擎,那么php模板赋值的原理是什么呢
    2013-11-11
  • php获取字符串前几位的实例(substr返回字符串的子串用法)

    php获取字符串前几位的实例(substr返回字符串的子串用法)

    下面小编就为大家带来一篇php获取字符串前几位的实例(substr返回字符串的子串用法)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • PHP中常见的错误与异常处理总结大全

    PHP中常见的错误与异常处理总结大全

    任何程序员在开发时都可能遇到过一些失误,或其他原因造成错误的发生。当然,用户如果不愿意或不遵循应用程序的约束,也会在使用时引起一些错误发生。下面这篇文章主要给大家介绍了关于PHP中常见的错误与异常处理,需要的朋友可以参考下,
    2017-08-08
  • yii2局部关闭(开启)csrf的验证的实例代码

    yii2局部关闭(开启)csrf的验证的实例代码

    本篇文章主要介绍了yii2局部关闭(开启)csrf的验证的实例代码。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • stripos函数知识点实例分享

    stripos函数知识点实例分享

    在本篇内容中我们给大家分享了关于stripos函数知识点实例内容,有需要的朋友们跟着学习下。
    2019-02-02
  • PHP正则表达式入门教程(推荐)

    PHP正则表达式入门教程(推荐)

    正则表达式,大家在开发中应该是经常用到,现在很多开发语言都有正则表达式的应用。本文给大家介绍PHP正则表达式入门教程,感兴趣的朋友一起学习吧
    2016-05-05
  • php初学者教程之图片缩放和裁剪

    php初学者教程之图片缩放和裁剪

    这篇文章主要给大家介绍了关于php图片缩放和裁剪的相关资料,主要利用的是imagecopyresampled(),文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-02-02
  • 基于curl数据采集之单页面并行采集函数get_htmls的使用

    基于curl数据采集之单页面并行采集函数get_htmls的使用

    用第一篇的get_html()实现简单的数据采集,由于是一个一个执行才采集数据的传输时间就会是所有页面下载的总时长,一个页面假设1秒,那么10个页面就是10秒了。所幸curl还提供了并行处理的功能
    2013-04-04
  • Laravel框架FormRequest中重写错误处理的方法

    Laravel框架FormRequest中重写错误处理的方法

    这篇文章主要介绍了Laravel框架FormRequest中重写错误处理的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-02-02

最新评论