我想在我的php脚本中包含外部js文件。我正在关注zend框架。现在我正在控制器的init函数中添加js文件,就像这样。
public function init() {
$this->doUserAuthorisation();
parent::init();
$this->view->headScript()->appendFile($this->view->baseUrl().'/js/front_cal/jquery-1.3.2.min.js');
$this->view->headLink()->setStylesheet($this->view->baseUrl().'/styles/front_cal/calendar.css');
}
问题我面临的是,js文件不包含。这是包含js文件的正确方法吗?
答案 0 :(得分:12)
JavaScript(以及图片,CSS,flash电影等)属于视图层,因此在那里进行配置。
对于全局包含的文件,将它们添加到您的布局中,例如
<!-- layout.phtml -->
<head>
<?php echo $this->headScript()->prependFile(
$this->baseUrl('path/to/file.js')) ?>
<?php echo $this->headLink()->prependStylesheet(
$this->baseUrl('path/to/file.css')) ?>
<!-- snip -->
<?php echo $this->inlineScript()->prependFile(
'https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js') ?>
</body>
然后,您的视图脚本可以将资源添加到布局中回显的帮助程序。由于布局使用prepend*()
方法,因此将首先显示全局文件,例如
<?php // views/scripts/index/index.phtml
$this->inlineScript()->appendFile($this->baseUrl('path/to/script.js'));
答案 1 :(得分:2)
在上面的解决方案中,&#39; path / to / file.js&#39;脚本将包含在标题中两次。在致电echo
之前无需prependFile
。这种行为可能会导致重复javascript控件。
<!-- layout.phtml -->
<head>
<?php echo $this->headScript()->prependFile(
$this->baseUrl('path/to/file.js')) // this will echo out the whole prependFile queue