使用 zend 框架创建动态侧边栏的最佳实践

Posted

技术标签:

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

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

【问题讨论】:

【参考方案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】:

这适用于 ZF 1.11:A dynamic sidebar implementation in Zend Framework

【讨论】:

【参考方案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 - 并不能真正帮助回答所问的问题。

以上是关于使用 zend 框架创建动态侧边栏的最佳实践的主要内容,如果未能解决你的问题,请参考以下文章

最佳实践zend framework + facebook Api

更新:在 Zend Framework 中管理静态内容的最佳实践?

使用 WantsFullScreenLayout 应用程序处理扩展高度状态栏的最佳实践?

Laravel 数据库日志 - 最佳实践是啥

查找有关 PHP、Zend 框架、JavaScript 安全问题的新闻的最佳来源是啥

基于WPS的Word最佳实践系列(利用表格控制排版)