我已经创建了一个自定义视图助手,我正在成功调用它。我遇到的唯一问题是,似乎我无法通过执行以下操作将代码注入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
答案 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');)