在zend框架中包含js文件的最佳方法

时间:2012-04-11 05:17:37

标签: php javascript zend-framework

我想在我的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文件的正确方法吗?

2 个答案:

答案 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