通过yii中的registerScript将id设置为script


Set id to script by registerScript in yii

我发现了更多关于这个问题的帖子,但所有的答案都无济于事。例如,在Yii和Yii CClientScript文档中,从registerScript方法强制执行脚本顺序。上面的帖子写了

registerScript(string $id, string $script, integer $position=NULL, array $htmlOptions=array ( ))

为了获得以上脚本:

<script type="text/javascript" id="some_id">
    console.log("sasasasas");
    //js code
</script>

我有一段代码:

$cs = Yii::app()->getClientScript();
$cs->registerScript(__CLASS__ . '#' . $this->id . 'Ex', '
        console.log("sasasasas");'
        //js code
   , CClientScript::POS_READY,  array('id="some_id"' ) 
);

但我没能像我预想的那样得到剧本。我得到了没有id="some_id"的脚本。有人能帮我找到我遗漏的东西吗?

编辑
不适用于两个版本:

$cs = Yii::app()->getClientScript();
$cs->registerScript(__CLASS__ . '#' . $this->id . 'Ex', '
        console.log("sasasasas");'
        //js code
   , CClientScript::POS_READY,  array('id'=> 'some_id' ) 
);

$cs = Yii::app()->getClientScript();
$cs->registerScript('some_id', '
        console.log("sasasasas");'
        //js code
   , ) 
);

我想你必须更改行

array('id="some_id"')

array('id' => 'some_id')

可能有人稍后会遇到这个问题。我建议他们,不要犯我的错误@Chris的回答是对的,当您使用render()渲染视图时,registerScript()会设置一个id,但当您使用renderPartial()时,registerScript()不会将id设置为脚本。您可以从后中找到解决方案