yii2 smarty php,Yii2-smarty的一些小坑

在写本文前我不得不说一句,其实我是不想用smarty的,我想尝试一下twig,但是phpstorm的Twig插件真要命,卡成翔,所以我只能用smarty。为什么不用prado了呢?官方说不支持了,我晶啊 在使用smarty的时候官方的代码和例子看上去很美,不过要注意几点 1、用yii

在写本文前我不得不说一句,其实我是不想用smarty的,我想尝试一下twig,但是phpstorm的Twig插件真要命,卡成翔,所以我只能用smarty。为什么不用prado了呢?官方说不支持了,我晶啊

在使用smarty的时候官方的代码和例子看上去很美,不过要注意几点

1、用yii2-smarty,还是必须得用layout,如果你不支持layout文件,默认就是/layouts/main.php,天啊,为什么是PHP?而且在这里面也还真的能用PHP代码。整个都崩溃了

2、你可以指定layout文件,比如:main.tpl,OK你必须得象PHP文件一样,得写{$this->head()},{$this->startBody()}{$this->endPage()}等,否则 ClientScript功能就无法使用

3、如果你指定layout=false,那么,就不支持ClientScript了。因为你incude file='xxx.tpl',在每一个独立的文件里都必须要象2中一个个的this->head(),this->endPage全写上

4、再来一个bug:{registerJsFile url=''},这个函数有BUG

原来是:

public function functionRegisterJsFile($params, $template)

{

if (!isset($params['url'])) {

trigger_error("registerJsFile: missing 'url' parameter");

}

$url = ArrayHelper::remove($params, 'url');

$key = ArrayHelper::remove($params, 'key', null);

$depends = ArrayHelper::remove($params, 'depends', null);

if (isset($params['position']))

$params['position'] = $this->getViewConstVal($params['position'], View::POS_END);

Yii::$app->getView()->registerJsFile($url, $depends, $params, $key);

}

改成为:/**

* Smarty function plugin

* Usage is the following:

*

* {registerJsFile url='http://maps.google.com/maps/api/js?sensor=false' position='POS_END'}

*

* Supported attributes: url, key, depends, position and valid HTML attributes for the script tag.

* Refer to Yii documentation for details.

* The position attribute is passed as text without the class prefix.

* Default is 'POS_END'.

*

* @param $params

* @param \Smarty_Internal_Template $template

* @return string

* @note Even though this method is public it should not be called directly.

*/

public function functionRegisterJsFile($params, $template)

{

if (!isset($params['url'])) {

trigger_error("registerJsFile: missing 'url' parameter");

}

$url = ArrayHelper::remove($params, 'url');

$key = ArrayHelper::remove($params, 'key', null);

$params['depends'] = ArrayHelper::remove($params, 'depends', null);

if (isset($params['position']))

$params['position'] = $this->getViewConstVal($params['position'], View::POS_END);

Yii::$app->getView()->registerJsFile($url, $params, $key);

}

其实就是$params['depends']这个参数。registerJsFile只能接受3个参数,但事实上用了4个参数,所以调整一下即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值