脚本宝典收集整理的这篇文章主要介绍了php – Yii1:Controller :: beforeRender in Yii2,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我曾经在控制器中有一个数组,它存储了我需要作为JavaScript发送到前端的所有变量:
public $jsVARs; public function toJSObject($params){ $this->jsVars = array_merge($this->jsVars,$params); } PRivate function printJSVarsObject(){ //convert my PHP array into a js JSON object }
当我需要一个在Javascript中暴露的变量时,我只需要在View或Controller中使用$this-> toJSObject.
那么在控制器中我也习惯了:
public function beforeRender($view){ $this->printJSVarsObject(); }
在Yii2中,我必须使用自定义视图配置View组件,然后附加事件:
namespace app\classes; use yii\base\Event; use yii\helPErs\Json; Event::on(\yii\web\View::classname(),\yii\web\View::EVENT_END_BODY,function($event) { $event->sender->registerJSVars(); }); class View extends \yii\web\View { public $jsVars = []; public function addJsParam($param){ $this->jsVars = array_merge($this->jsVars,$param); } public function registerJSVars() { $this->registerJs( "var AppOptions= " . Json::htMLEncode($this->jsVars) . ";",View::POS_END,'acn_options' ); } }
但是,除了课外活动对我来说似乎很奇怪.此外,当我在控制器中时,我将无法使用我以前的方法使用这种方法.
你们怎么这样做?
$this->context
从视图文件中返回当前使用的控制器的实例.所以要访问你将要使用的beforeRender()方法
$this->context->beforeRender()
以上是脚本宝典为你收集整理的php – Yii1:Controller :: beforeRender in Yii2全部内容,希望文章能够帮你解决php – Yii1:Controller :: beforeRender in Yii2所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。