0

我在 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。

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

我是否必须扩展 HeadScript、HeadStyle 和 InlineScript 类并添加返回所有 js 和 css 的函数?还是我必须做点别的?

4

2 回答 2

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 的基本布局。

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

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

于 2013-04-09T13:19:04.040 回答
0

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

$this->headScript()->getContainer()->getValue()
于 2013-04-09T21:33:28.910 回答