首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Zend headScript()和appendFile没有按预期工作

Zend headScript()和appendFile没有按预期工作
EN

Stack Overflow用户
提问于 2010-03-12 17:21:25
回答 6查看 21.4K关注 0票数 12

我在使用headScript()->appendFile('file name')与Zend一起添加javascript文件时遇到了问题。我的布局设置如下:

代码语言:javascript
复制
    <?= $this->headScript()
    ->prependScript( 'BASE_URL = "' . $this->baseUrl() . '";' )
    ->appendFile( $this->baseUrl('js/lib/jquery/jquery-1.4.2.min.js') )
    ->appendFile( $this->baseUrl('js/admin.js') );

?>

然后,在我的控制器中,我试图只为这个页面追加一个额外的js文件,例如:

代码语言:javascript
复制
    $this->view->headScript()->appendFile( 'another/js/file.js' );

此文件需要附加到布局中已经设置的内容。但是,该文件会在其他“appendFile”文件之前添加。我也试过

代码语言:javascript
复制
$this->headScript()->offsetSetFile(999, '/js/myfuncs.js');

但这仍然会在其他文件之前添加文件。这不是我所期望的工作方式,尤其是在使用offsetSetFile方法时。如何在其他文件之后添加此文件?谢谢。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-12-07 13:46:12

答案是在layout.phtml中使用layout.phtml,在视图中使用headScript()->appendFile

票数 21
EN

Stack Overflow用户

发布于 2012-06-13 15:11:01

我知道这是个很晚的回答,但是!

如果您这样做,appendFile或appendScript将使用下一个可用索引。因此

代码语言:javascript
复制
$this->headScript()->offsetSetFile(50, 'file');
$this->headScript()->appendFile('file2');

等于

代码语言:javascript
复制
$this->headScript()->offsetSetFile(50, 'file');
$this->headScript()->offsetSetFile(51, 'file2');

另外,需要注意的是,控制器代码在视图/布局代码之前首先执行。因此,在您的示例中,您的附件实际上使用的是id的1000和1001。解决这个问题的一个快速方法就是显式地为所有附加程序使用offsetSetFile。因此,布局中的代码如下所示:

代码语言:javascript
复制
<?= 
   $this->headScript()
      ->prependScript( 'BASE_URL = "' . $this->baseUrl() . '";' )
      ->offsetSetFile(500, $this->baseUrl('js/lib/jquery/jquery-1.4.2.min.js') )
      ->offsetSetFile(501, $this->baseUrl('js/admin.js') );
?>

我希望这对未来的谷歌人有帮助

票数 2
EN

Stack Overflow用户

发布于 2010-03-12 17:28:46

我注意到,如果我“预置”布局中的所有文件,那么我可以在我的控制器中使用appendFile,并且它会出现在它们后面。不幸的是,我必须在布局中以相反的顺序列出所有的JS文件(因为它们是自己的)。我真的很想让事情井然有序,只是能够附加到我的布局堆栈。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2434506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档