是否使用AJAX在ZF2中包含js和css

时间:2013-04-09 10:30:40

标签: zend-framework2

我在ZF2中有一些必须包含js和css文件的视图。 我可以这样做:

$this->headscript()->appendScript(...

但是,当我使用ajax获取视图结果时,我需要从服务器数组中获取视图html,css包含和js包含。像这样:

array(
    'html' => '<div id="timepicker-wrap"></div>',
    'js_include' => array('/js/timepicker.js'),
    'js_eval' => '$("#timepicker-wrap").timepicker()',
    'css_include' => array('/css/timepicker.css'),
);

我将此数据提供给客户端后,我的js库将包含html,js和css。

问题是从服务器端的脚本中获取所有js和css文件和代码。

我是否正确,我必须扩展HeadScript,HeadStyle和InlineScript类并添加返回所有js和css的函数?或者我还要做别的事情?

2 个答案:

答案 0 :(得分:2)

在使用Ajax时可以轻松绕过布局,例如:

SomeController.php

public function myAction()
{
    if($this->getRequest()->isXmlHttpRequest()) {
        $this->layout('application/layout/ajax-layout');
    }

    return new ViewModel();
}

应用/布局/ AJAX-layout.phtml

<?php echo $this->content ?>

当您尝试使用Ajax请求访问somecontroller / my /时,将不会呈现包含head / js / etc的基本布局。

当您使用正常请求查看时,它将被呈现。

还有其他几种方法,但这可能是最简单的方法:)

答案 1 :(得分:0)

您可以使用getContainer()方法从headScript,headStyle和InlineScript获取所有js和css

$this->headScript()->getContainer()->getValue()