使用 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】:我们想要更多详细信息,即侧边栏中显示的内容类型、显示方式(即使用<ul>
、<div>
或其他内容)是从数据库中检索到的内容,等等
在同样使用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 应用程序处理扩展高度状态栏的最佳实践?