Zend 框架与 dojo

Posted

技术标签:

【中文标题】Zend 框架与 dojo【英文标题】:Zend framework with dojo 【发布时间】:2011-12-15 23:21:16 【问题描述】:

我正在使用 zend 框架开发应用程序,我想添加 dojo 框架。 我做了以下事情: 引导程序.php

public function _initViewHelpers()  
  
    $this->bootstrap('layout');  
    $layout = $this->getResource('layout');  
    $view = $layout->getView();

    $view->addHelperPath('Zend/Dojo/View/Helper',
                                    'Zend_Dojo_View_Helper');

    $view->dojo()->enable();  
  

我的布局.phtml

<?php echo $this->doctype() ?>
<html>
    <head>
    <?php echo $this->headTitle() ?>
    <?php echo $this->headMeta() ?>
    <?php echo $this->headLink() ?>
    <?php echo $this->headStyle() ?>
    <?php if ($this->dojo()->isEnabled())
        $this->dojo()->setLocalPath('/js/dojo/dojo.js')
                     ->addStyleSheetModule('dijit.themes.claro');
        echo $this->dojo();
       
    ?>
    <?php echo $this->headScript() ?>
</head>
<body class="claro">
    <?php echo $this->layout()->content ?>
    <?php echo $this->inlineScript() ?>
</body>

最后是我的 index.phtml :

<script type="text/javascript">

dojo.addOnLoad(function() 
    // our test data store for this example:
    var store4 = new dojo.store.JsonRest(
        target: '/guestbook/test'
    );

    storeData =  new dojo.data.ItemFileReadStore( 
             data:store4 
        ); 

    // set the layout structure:
    var layout4 = [
        field: 'Title',
        name: 'Title of Movie',
        width: '200px'
    ,
    
        field: 'Year',
        name: 'Year',
        width: '50px'
    ,
    
        field: 'Producer',
        name: 'Producer',
        width: 'auto'
    ];

    // create a new grid:
    var grid4 = new dojox.grid.DataGrid(
        query: 
            Title: '*'
        ,
        store: storeData,
        clientSort: true,
        rowSelector: '20px',
        structure: layout4
    ,
    document.createElement('div'));

    // append the new grid to the div "gridContainer4":
    dojo.byId("gridContainer4").appendChild(grid4.domNode);

    // Call startup, in order to render the grid:
    grid4.startup();
);

<div id="gridContainer4" style="width: 100%; height: 100%;">
</div>

<?php // setup required dojo elements:
$this->dojo()->enable()
             ->setDjConfigOption('parseOnLoad', true)
             ->requireModule('dojo.store.JsonRest')
             ->requireModule('dojo.data.ObjectStore')
             ->requireModule('dojo.data.ItemFileReadStore')
             ->requireModule('dojox.data.QueryReadStore')
             ->requireModule('dojox.grid.DataGrid')
             ->addStyleSheet('/js/dojox/grid/resources/claroGrid.css')
             ->addStyleSheet('/js/dojox/grid/resources/Grid.css'); ?>

当我尝试访问页面 localhost/guestbook 时,页面已呈现但没有数据网格,就像未启用 javascript... url /guestbook/test 返回一个 json 对象。 在 firebug 中,没有 javascript 错误,dojo.js 已加载,dojo 模块和 css 也已加载。 我不明白发生了什么! 谢谢:)

【问题讨论】:

【参考方案1】:

您正在创建网格并将其放入未附加的 div 中。相反,附加网格 gridContainer4

// create a new grid:
var grid4 = new dojox.grid.DataGrid(
    query: 
        Title: '*'
    ,
    store: storeData,
    clientSort: true,
    rowSelector: '20px',
    structure: layout4
, 
dojo.byId("gridContainer4"));

【讨论】:

以上是关于Zend 框架与 dojo的主要内容,如果未能解决你的问题,请参考以下文章

Zend 框架中的 Dojo 对话框错误

Zend 框架与 PHP,更改类标签

Zend 2 + Dojo 文档…

Zend 框架中的 Ajax 搜索需要帮助

Zend 框架与 XAMPP 的集成

Dojo前端开发框架与jQuery前端开发框架,对比分析总结