【问题标题】:Best practice creating dynamic sidebar with zend framework使用 zend 框架创建动态侧边栏的最佳实践
【发布时间】:2009-01-07 16:33:23
【问题描述】:

使用 zend 框架创建动态侧边栏或其他非内容布局位置的最佳实践是什么。此时我创建了控制器女巫,我称之为 WidgetsController。在这个控制器中,我为侧边栏定义了一些带有“侧边栏”响应段的操作,在 IndexController 中,我用 $this->view->action(); 调用它们。功能,但我认为这不是创建动态侧边栏的最佳实践。 感谢您的回答。

【问题讨论】:

    标签: php zend-framework


    【解决方案1】:

    你的问题没有提供很多细节。一般来说,我会说通过视图的渲染/部分方法将侧边栏加载为视图模板。所以从内部来看:

    //$data is dynamic data you want to pass to the sidebar
    echo $this -> partial('/path/to/sidebar.phtml',array('menuitems' => $data));
    

    然后侧边栏可以处理该动态数据:

    //sidebar.phtml
    <div id="sidebar">
    
        <?php foreach($this -> menuitems as $item) : ?>
        <a href="<?php echo $item['url']; ?>"><?php echo $item['title']; ?></a>
        <?php endforeach; ?>
    
    </div>
    

    如果您需要额外的功能,您可以创建一个专用的view helper 来处理它。

    【讨论】:

      【解决方案2】:

      【讨论】:

        【解决方案3】:

        是的,伙计们,我敢打赌,Code Igniter 人员的回答是正确的方法。 实际上,了解 CI 如何简单地完成它并进行比较很有帮助。 在 ZF 中基本相同,只是 ZF 使用“Partials”代替“命名视图”。

        ZF 只是有更多强加的规则,例如布局 + 视图 + 部分,以及更多的内部机制来实现这一点,这实际上使它运行速度减半, 而代码点火器似乎只是将整个设备扁平化为“命名视图”。

        (我还没有决定 ZF 是否煮过头了,或者某些 CI 牛排是否必须在中间保持生状态。)

        如果你使用 $navigation->setPartial(blah blah) 那么前导数组(从技术上讲,这种数据构成了 MVC 事物的“模型”部分)并且对部分可用。

        所以你有它,这个想法似乎是不要将模型的显示方面拉到控制器中,将模型显示内容推送到视图处理机制。

        我自己也打算尝试一下,我确实在 Zend 手册的 view helpers 部分中搜索了 partials 以找到它,尽管示例有点薄。

        祝我好运 基思

        【讨论】:

          【解决方案4】:

          我们想要更多详细信息,即侧边栏中显示的内容类型、显示方式(即使用&lt;ul&gt;&lt;div&gt; 或其他内容)是从数据库中检索到的内容,等等

          在同样使用Model, View, Controller 格式的CodeIgniter 中,我们创建了一个名为“sidebar.php”的视图,在Header 视图中,我们包含了对该侧边栏视图的调用,即:

          <html>
          <head>.......</head>
          <div id="header">....</div>
          <?php $this->load->view('sidebar');?>
          

          侧边栏视图包含显示菜单项的逻辑。通常它是一个静态菜单,但如果它是动态的并且必须从数据库中获取,我会这样做:

          <ul>
             <?php
             $items=$this->some_model->getMenuItems();
             foreach ($items as $item):
             ?>
               <li><a href="<?=$item['url'];?>"><?=$item['text'];?></li>
             <?php endforeach;?>
          </ul>
          

          【讨论】:

          • 提供基于 CodeIgniter 的答案 - 或建议提问者使用 CodeIgniter - 并不能真正帮助回答所问的问题。
          猜你喜欢
          • 1970-01-01
          • 2010-12-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-07-23
          • 1970-01-01
          • 2018-02-24
          • 2021-10-15
          相关资源
          最近更新 更多