在自定义视图助手中使用headScript()

时间:2011-09-01 14:00:09

标签: zend-framework

我已经创建了一个自定义视图助手,我正在成功调用它。我遇到的唯一问题是,似乎我无法通过执行以下操作将代码注入headScript。我的视图助手中的其他所有内容都完美无缺。

$this->view->headScript()->captureStart();
echo '
    $(function() {
        //js code here              
    });
';  
$this->view->headScript()->captureEnd();

任何帮助都将不胜感激。

进一步调查: 好像这只发生在从我的布局调用的视图助手上。从视图脚本内部调用视图助手可以正常工作。我很难过!

更多调查: 如下所示回应标题的作品。有谁知道那是为什么?

echo $this->view->headScript()->appendFile(filename) // works
echo $this->view->headScript()->appendScript(script) // works

2 个答案:

答案 0 :(得分:2)

虽然可能有点太晚了:

这可能是因为当您在HTML文档头部区域下方的布局脚本中调用headScript()ViewHelper时,它将不会被回显。如果你回显出appendScript函数的结果,headScript()将返回$ this,从而回显所有剩余的脚本。结果是您的脚本标记不在HTML文档的头部区域。相反,它将在body标签内的某处。

解决方案可能是在回显头区域之前将视图助手的结果保存到变量。之后,您可以回显该变量的内容。

<?php
$myResult = $this->myViewHelper();
?><html>
    <head>
        <?php echo $this->headScript() ?>
    </head>
    <body>
        <?php echo $myResult ?>
    </body>
</html>

答案 1 :(得分:0)

您是否尝试过使用appendScript()方法?

我的意思是:

$this->view->headScript()->appendScript('$(function() {//js code here });', $type = 'text/javascript');)