首页 > 作文

laravel框架实现为 Blade 模板引擎添加新文件扩展名操作示例

更新时间:2023-04-08 14:53:37 阅读: 评论:0

本文实例讲述了laravel框架实现为 blade 模板引擎添加新文件扩展名。分享给大家供大家参考,具体如下:

因为一些原因,我准备把 blessing skin 的框架换成 laravel 了(之前是自己搭建的一个框架),但是在模板迁移的时候遇到了一点问题。

之前我是使用的 xiaol桥玄er/blade 这个从 laravel 中抽离出来的 blade技术职称一般怎么填写 模板引擎,并且自定义为使用 .tpl文件后缀。你问为啥不用默认的 .blade.php 而是用这个 smarty 的模板扩展名?能有啥,好看呗 :-d

不过之前我是直接调用 fileviewfinder 类的 addextension 方法来添加扩展名的,但是在 laravel 里就不能这样了。你总不能在 illuminate\view 加几句话吧?

去 google 搜索了下,没发现有可以很方便使用的方法(当然是搜的鹰文,说不定是我姿势不对),就只好自己找了。

首先先从 view facade 入手,可以看到它是从服务容器中解析出了 view 这个绑定。继续往下找,打开 illuminate\证明材料view\viewrviceprovider,看看 view 的服务提供者到底是把啥给绑定到 view 上去了:

public function registerfactory(){  $this->app->singleton('view', function ($app) {    $resolver = $app['view.engine.resolver'];    $finder = $app['view.finder'];    $env = new factory($resolver, $finder, $正分数是有理数吗app['events']);    $env->tcontainer($app);    $env->share('app', $app);    return $env;  });}

嗯嗯,我们可以看到这是绑定了个 illuminate\view\factory 实例,于是我们继续往下找,看看这个工厂类都有啥方法:

/** * register a valid view extension and its engine. * * @param string  $extension * @param string  $engine * @param \closure $resolver * @return void */public function addextension($extension, $engine, $resolver = null){  $this->finder->addextension($extension);  if (ist($resolver)) {    $this->engines->register($en生物多样性包括gine, $resolver);  }  unt($this->extensions[$extension]);  $this->extensions = array_merge([$extension => $engine], $this->extensions);}

哦哦~ 果然我们在工厂类里找到了一个 fileviewfinder::addextension 的封装。然而正当我欣喜地准备调用的时候,却发现这个方法有个神秘的 $engine 参数。

诶?wtf?这尼玛是啥?( ・_ゝ・)

看了看文档也没看出个所以然来,就只好从方法的具体代码里找找蛛丝马迹了:

$this->extensions = array_merge([$extension => $engine], $this->extensions);

哦呀?这一行在 $this->extensions 里加上了一个 [$extension => $engine] 的数组,那么只要我们看看这个数组原先的定义,就可以知道这个 $engine 是个啥子了:

/** * the extension to engine bindings. * * @var array */protected $extensions = ['blade.php' => 'blade', 'php' => 'php'];

啊哈,原来这个 $engine 指的是解析 $extension 所使用的引擎!这下一切都水落石出了,如果你在传入 .tpl 的同时传入一个 blade 的引擎,就是告诉 blade,要把以 .tpl 为扩展名的文件用 blade 模板引擎来解析。

这下一切都简单了,我们只需要在 apprviceprovider (或者其他适当的服务提供者)里通过调用 view facade 就可以非常方便快捷地添加扩展名了:

view::addextension('tpl', 'blade');

本文发布于:2023-04-08 14:53:35,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/253574b1328efcfbc4f5fcbdfde04251.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:laravel框架实现为 Blade 模板引擎添加新文件扩展名操作示例.doc

本文 PDF 下载地址:laravel框架实现为 Blade 模板引擎添加新文件扩展名操作示例.pdf

标签:扩展名   模板   引擎   我是
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图