加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

laravel 5 实现模板主题功能

发布时间:2020-12-14 19:51:45 所属栏目:大数据 来源:网络整理
导读:《:laravel 5 实现模板主题功能》要点: 本文介绍了:laravel 5 实现模板主题功能,希望对您有用。如果有疑问,可以联系我们。 众所周知,laravel渲染模板是通过View::make()实现的,需要显式指定模板文件路径: PHP教程 代码如下: function index() { ??? re

《:laravel 5 实现模板主题功能》要点:
本文介绍了:laravel 5 实现模板主题功能,希望对您有用。如果有疑问,可以联系我们。

众所周知,laravel渲染模板是通过View::make()实现的,需要显式指定模板文件路径:PHP教程

代码如下:

function index()
{
??? return View::make('index.index');
}

既然这样,我们就可以自己实现模板主题功能,我们只需要将模板文件放到一个主题名称对应的目录里就行,比如默认主题为 default 的话,我们就这样写:PHP教程

代码如下:

function index()
{
??? return View::make('default.index.index');
}

自定义主题 custom :PHP教程

代码如下:

function index()
{
??? return View::make('custom.index.index');
}

从配置文件中读取主题名:PHP教程

代码如下:

function index()
{
??? return View::make(Config::get('app.theme','default').'.index.index');
}

这样基本就实现模板主题化的功能了,但还存在一个问题,那就是custom主题必须实现所有default主题的所有模板,否则会导致某些页面模板文件不存在报错,那么进一步优化:PHP教程

代码如下:

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主题中对应的模板.PHP教程

这么多行代码,我们可以继续封装一下,这时候要用到Response对象了,我们知道 Response::view() 等同于 View::make(),而Response还有一个办法Response::macro()办法可以用来定义一个宏,我们可以把逻辑封装到宏里面:PHP教程

代码如下:

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

使用:PHP教程

代码如下:

function index()
{
??? $bindings = array(
??????? 'title' => '首页'
??? );
??? return Response::render('index.index',$bindings);
}

需要注意的是传入模板的变量得通过Response::render的第二个参数.PHP教程

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

欢迎参与《:laravel 5 实现模板主题功能》讨论,分享您的想法,编程之家 52php.cn为您提供专业教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读