1949啦网--小小 痛苦,是因为能力和欲望不匹配造成的

yii2框架配置smarty

为了剥离前后端,项目的前端使用smarty模板引擎,后端开发框架是yii2。官方基于smarty专门开发了yii2-smarty拓展用于yii2的项目中。

yii2-smarty的官方地址是: https://github.com/yiisoft/yii2-smarty

坑爹的是,项目里的文档基本上都在说怎么安装,怎么使用smarty语法。想简单的改变smarty默认的单括号为双括号也没找到该怎么改。

一开始以为用的smarty是yii2自己实现的,简化版不支持这些配置。这几天来自喵的刚性需求,想着官方没有实现,那就自己实现,自给自足。

为了达到这个目的,首先查找原生smarty配置,发现可以通过通过 left_delimiter和 right_delimiter 两个选项设置。接下来就是到yii2-smarty的项目,看看包装成yii\web\View可以调用的renderer需要怎么做。看源代码的时候瞄到了如下代码:

$this->smarty->$key = $value;

心想这不是支持的吗?!马上跑到配置文件里设置:

'view' => [             'class' => 'app\library\View',             'renderers' => [                 'tpl' => [                     'class' => 'yii\smarty\ViewRenderer',                     'cachePath' => '@runtime/Smarty/cache',                     'left_delimiter' => '{{',                     'right_delimiter' => '}}',                 ],             ],         ], 

添加了之后,执行脚本提示 没有 left_delimiter 这个属性! shenmegui!

再仔细细看yii2-smarty的源码,发现整体是:

foreach ($this->options as $key => $value) {             $this->smarty->$key = $value;         }

我去,原来是要放在options里面啊!既然弄明白了,那么配置改成:

'view' => [             'class' => 'app\library\View',             'renderers' => [                 'tpl' => [                     'class' => 'yii\smarty\ViewRenderer',                     'cachePath' => '@runtime/Smarty/cache',                     'options' => [                         'left_delimiter' => '{{',                         'right_delimiter' => '}}',                     ],                 ],             ],         ], 

再次测试,发现OK了!

嗯,接下来smarty的配置都知道该怎么做了~

 

PS: 一开始以为官方没有实现这个功能,还想着能够添加之后pull request过去呢。这个小想法破灭了~.~

原文链接:https://www.qiquanji.com/post/4803.html

本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。

微信扫码关注

更新实时通知

作者:xialibing 分类:高级教程 浏览: