需要帮助使用 dojo 布置站点

Posted

技术标签:

【中文标题】需要帮助使用 dojo 布置站点【英文标题】:Need help laying out a site with dojo 【发布时间】:2011-01-24 22:47:46 【问题描述】:

基本上,伙计们,我想用dojo布局一个网站,我将有一个标题,内容区域(这分为两部分,左侧窗格中有一些手风琴,右侧用于主要内容)然后是页脚。

因为我需要网站始终具有此布局,所以我决定将其放在主布局中。但是,当我查看该站点时,我可以看到默认索引页面,但它不像我希望的那样在窗格中,并且没有任何 dijit 小部件被呈现。

不确定是否允许在帖子中粘贴大代码,如果不是我很抱歉,但下面是主布局的代码。我没有对默认的zend 工具结构做太多事情。我只创建了几个模块:

    <?php
    Zend_Dojo::enableView($this);

    $this->dojo()->setCdnBase(Zend_Dojo::CDN_BASE_GOOGLE)
            ->addStyleSheetModule('dijit.themes.tundra')
            ->setDjConfigOption('parseOnload', TRUE)
            ->setDjConfigOption('locale', 'en-GB')
            ->setDjConfigOption('isDebug', TRUE);
    echo $this->dojo();
    ?>

    <script type="text/javascript">
        dojo.require("dijit.layout.ContentPane");
        dojo.require("dijit.layout.BorderContainer");
        dojo.require("dijit.layout.TabContainer");
        dojo.require("dijit.layout.AccordionContainer");
    </script>
</head>
<body>
    <div dojoType="dijit.layout.BorderContainer" gutters="true" id="borderContainer">
        <div id="header" dojoType="dijit.layout.ContentPane" region="top" splitter="false">
            <div id="logo">
                <img src="/images/logo.gif" />
            </div>

            <div id="menu">
                <a href="<?php echo $this->url(array(), 'home'); ?>">HOME</a>
                <a href="<?php echo $this->url(array('page' => 'services'), 'static-content'); ?>">SERVICES</a>
                <a href="#">CONTACT</a>
            </div>
        </div><!-- end header -->

        <div dojoType="dijit.layout.BorderContainer" liveSplitters="false" design="sidebar"
             region="center" id="content">
            <div dojoType="dijit.layout.AccordionContainer" minSize="20" style="width: 300px;"
                 id="leftAccordion" region="leading" splitter="true">
                <div dojoType="dijit.layout.AccordionPane" title="One fancy Pane">
                </div>
                <div dojoType="dijit.layout.AccordionPane" title="Another one">
                </div>
                <div dojoType="dijit.layout.AccordionPane" title="Even more fancy" selected="true">
                </div>
                <div dojoType="dijit.layout.AccordionPane" title="Last, but not least">
                </div> <!-- end AccordionContainer -->
            </div>
            <div dojoType="dijit.layout.TabContainer" region="center" tabStrip="true">
                <div dojoType="dijit.layout.ContentPane" title="My first tab" selected="true">
                    <?php echo $this->layout()->content ?>
                </div>
                <div dojoType="dijit.layout.ContentPane" title="My second tab">
                    Lorem ipsum and all around - second...
                </div>
                <div dojoType="dijit.layout.ContentPane" title="My last tab" closable="true">
                    Lorem ipsum and all around - last...
                </div>
            </div>

        </div>
        <div id="footer">
            <p>Created with <a href="http://framework.zend.com/">Zend Framework</a>. Licensed under <a href="http://www.creativecommons.org/">Creative Commons</a>.</p>
        </div><!-- end footer -->
    </div>

【问题讨论】:

请注意,您可能不需要为您的目的嵌套两个 BorderContainer;一个带有顶部/左侧/底部/中心区域的区域应该就足够了。在此处查看“更高级的示例”:dojotoolkit.org/reference-guide/dijit/layout/… 此外,您的正文标签上缺少 class="tundra" 以实际应用主题。 【参考方案1】:

您在设置 dojo 配置选项时有错字。而不是

->setDjConfigOption('parseOnload', TRUE)

应该是

->setDjConfigOption('parseOnLoad', TRUE)

注意大写的“L”。如果你解决了这个问题,那么至少 dojo 解析器会完成它的工作。

没有检查你的布局是否OK,看Ken的评论。

【讨论】:

以上是关于需要帮助使用 dojo 布置站点的主要内容,如果未能解决你的问题,请参考以下文章

Dojo“加载”-消息

如何使用javascript将数组值传递给dojo饼图

dojo边框布局显示所有内容,闪烁然后正确重绘

在 dojo 1.7.2 中构建

使用Dojo获取查询字符串

windows下动态库,如何在linux下布置