我在使用headScript()->appendFile('file name')与Zend一起添加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文件,例如:
$this->view->headScript()->appendFile( 'another/js/file.js' );此文件需要附加到布局中已经设置的内容。但是,该文件会在其他“appendFile”文件之前添加。我也试过
$this->headScript()->offsetSetFile(999, '/js/myfuncs.js');但这仍然会在其他文件之前添加文件。这不是我所期望的工作方式,尤其是在使用offsetSetFile方法时。如何在其他文件之后添加此文件?谢谢。
发布于 2010-12-07 13:46:12
答案是在layout.phtml中使用layout.phtml,在视图中使用headScript()->appendFile。
发布于 2012-06-13 15:11:01
我知道这是个很晚的回答,但是!
如果您这样做,appendFile或appendScript将使用下一个可用索引。因此
$this->headScript()->offsetSetFile(50, 'file');
$this->headScript()->appendFile('file2');等于
$this->headScript()->offsetSetFile(50, 'file');
$this->headScript()->offsetSetFile(51, 'file2');另外,需要注意的是,控制器代码在视图/布局代码之前首先执行。因此,在您的示例中,您的附件实际上使用的是id的1000和1001。解决这个问题的一个快速方法就是显式地为所有附加程序使用offsetSetFile。因此,布局中的代码如下所示:
<?=
$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') );
?>我希望这对未来的谷歌人有帮助
发布于 2010-03-12 17:28:46
我注意到,如果我“预置”布局中的所有文件,那么我可以在我的控制器中使用appendFile,并且它会出现在它们后面。不幸的是,我必须在布局中以相反的顺序列出所有的JS文件(因为它们是自己的)。我真的很想让事情井然有序,只是能够附加到我的布局堆栈。
https://stackoverflow.com/questions/2434506
复制相似问题