0

我的野心已经超出了我在 Zend Framework 项目中实现 Dojo 的能力,该项目使用 PHP 和 Mysql 的 XAMPP 发行版作为我在 Windows 7 机器上的开发/测试环境。老实说,我不知道这是 ID10T 问题(我)还是系统故障。如果这是我的失败,我提前道歉。

我正在尝试使用 V1.7 版本的 Dojo 来实现,同时保持在生产就绪环境中(因此避免跳转到 ZF 2 等)。我从文档中了解到 Dojo V1.7 中的 dojo.xd.js 已被 dojo.js 取代。我的问题在于尝试为 Dojo 使用 CDN 源。

我页面的 dojo 内容呈现良好,但 Firebug 显示错误“NetworkError: 404 Not Found - http://ajax.googleapis.com/ajax/libs/dojo/1.7/dojo/dojo.xd.js ” & page 在页头中嵌入了以下内容:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/dojo/1.7/dojo/dojo.xd.js"></script>

在我的页面上跟踪问题的根源表明它是'echo $this->dojo;' 介绍问题的陈述。将引导文件中的 'setCdnVersion(1.7)' 更改为 'setCdnVersion(1.6)' 可以解决问题,但我真的很想使用 V1.7+。

实际上,将嵌入的 URI 粘贴到地址栏中会返回一个 404 页面未找到。Dogpile 没有提到这个特定的错误,我可以看到。我在 dojotoolkit.org 上找不到任何出现的错误报告(据我所知)

看起来我拥有的 Dojo 配置没有认识到需要将 dojo.js 用于 V1.7(尽管我不确定问题实际出在哪里)。因此,我必须承认,除了让自己受制于集体 SO 专业知识的摆布之外,我不知道如何解决这个问题。

引导程序.php:

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
...
protected function _initView ()
{
    // Initialize view
    $view = new Zend_View();
    $view->setEncoding('UTF-8');
    $view->headMeta()->appendName('Content-Type', 'text/html; charset=UTF-8');

    // add dojo helper path to view
    $view->addHelperPath('Zend/Dojo/View/Helper','Zend_Dojo_View_Helper');

    // configure Dojo view helper, disabled...
    $view->dojo()
                 ->disable()
                 ->setCdnVersion(1.7)
                 ->setCdnBase(Zend_Dojo::CDN_BASE_GOOGLE)
                 ->addStyleSheetModule('dijit.themes.tundra')
                 ->setDjConfigOption('parseOnLoad', TRUE)
                 ->setCdnDojoPath(Zend_Dojo::CDN_DOJO_PATH_GOOGLE)  
                 ->useCdn();

    // Add it to the ViewRenderer
    $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer');
    $viewRenderer->setView($view);

    // Return it, so that it can be stored by the bootstrap
    return $view;
}

}

在 index.phtml 中:

<head>
<?php echo $this->headLink()->prependStylesheet($this->baseUrl() . '/assets/css/site.css'); ?>

<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/dojo/1.7/dijit/themes/tundra/tundra.css">
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/dojo/1.7/dojox/grid/resources/Grid.css">
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/dojo/1.7/dojox/grid/resources/tundraGrid.css">
<?php 
    // Dojo plug-in enablers ...
    echo $this->dojo(); 
    $this->dojo()->enable();
?>

版本信息:Xampp dist - V1.7.7 (Apache/2.2.21, PHP/5.3.8) Zend Framework dist - V1.11.11

4

1 回答 1

1

1.7 发行说明

请注意,如果您是从 1.6 或更早版本升级,我们不再区分 dojo.js 和 dojo.xd.js(所有版本都使用新的加载程序跨域工作),因此请更新您的 URL 以引用 dojo。 js。

所以 Dojo 助手使用文件名 dojo.xd.js(跨域版本),但在 1.7 中它应该只是 dojo.js。Dojo 1.7 是在 Dojo 集成到 ZF 之后发布的,因此这可能是 ZF 本身的一个错误。

于 2012-07-16T12:43:34.903 回答