【问题标题】:Yii Widget views not rendering javascript codeYii Widget 视图不呈现 javascript 代码
【发布时间】:2013-03-04 21:51:01
【问题描述】:

我正在尝试使用 registerScript() 将一些原始 javascript 输出到我的页面中。以下似乎工作正常(在视图级别,由控制器调用):

modules/myApp/views/readEditor.php:

<?php
$cs = Yii::app()->getClientScript();  
$cs->registerScript(
                'my-hello-world-1',
                'var someCoolVariableInView = 11;',
                CClientScript::POS_END
);
?>

这应该会在之前出现:

/*<![CDATA[*/
var someCoolVariableInView = 11;
/*]]>*/

但是,当我在小部件的视图中执行等效操作时:

modules/myApp/components/views/myWidget.php:

<?php
$cs = Yii::app()->getClientScript();  
$cs->registerScript(
                'my-hello-world-2',
                'var someCoolVariableInWidget = 10;',
                CClientScript::POS_END
);
?>

javascript 不显示。

我已经做了一堆谷歌搜索,但没有发现任何有用的东西。我的猜测是小部件正在过滤掉 javascript...希望有一个参数或配置开关我可以更改以使其输出(或者也许有更好的方法)。

谢谢,

彼得

更新:

小部件是如何呈现的:

<?php
class myWidget extends CWidget {

    public function init() {
    } // end init()

    public function run() {
        // ...
        $this->render('myWidget');
    } // end run()

}

【问题讨论】:

  • 这个“小部件的视图”看起来非常可疑。它是如何渲染的?
  • @Jon 添加了更多代码,展示了小部件的呈现方式。这是你的意思吗?有什么可疑之处?请注意,我在小部件视图中有 div 和其他内容输出正常,只是脚本没有显示。
  • 你是如何加载小部件的?

标签: javascript yii yii-components


【解决方案1】:

将您的 registerScript 放入init()

【讨论】:

    【解决方案2】:

    在您的控制器中尝试以下代码来处理呈现 javascript 代码。

    $output=$this->widget('myWidget',array(),true); 
    echo $this->processOutput($output);
    

    【讨论】:

      猜你喜欢
      • 2013-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多