使用 zend 框架创建动态侧边栏或其他非内容布局位置的最佳实践是什么?此时我创建了控制器女巫,我称之为 WidgetsController。在这个控制器中,我为侧边栏定义了一些带有“侧边栏”响应段的操作,在 IndexController 中,我用 $this->view->action(); 调用它们。功能,但我认为这不是创建动态侧边栏的最佳实践。感谢您的回答。
4 回答
你的问题没有提供很多细节。通常,我会说通过视图的渲染/部分方法将侧边栏加载为视图模板。因此,从内部视图:
//$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>
如果您需要额外的功能,您可以创建一个专用的视图助手来处理它。
这适用于 ZF 1.11:Zend Framework 中的动态侧边栏实现
是的,伙计们,我敢打赌,来自 Code Igniter 的人的答案是正确的方法。实际上,了解 CI 如何简单地完成它并进行比较很有帮助。在 ZF 中基本相同,只是 ZF 使用“Partials”代替“命名视图”。
ZF 只是有更多强加的规则,例如布局 + 视图 + 部分,以及更多的内部机制来实现这一点,这实际上使它运行速度减半,而代码点火器似乎只是将整个设备扁平化为“命名视图”。
(我还没有决定 ZF 是否煮过头了,或者某些 CI 牛排是否必须在中间保持生吃。)
如果你使用 $navigation->setPartial(blah blah) 那么前导数组(从技术上讲,这种数据构成了 MVC 事物的“模型”部分)并且对部分可用。
所以你有它,这个想法似乎是不要将模型的显示方面拉到控制器中,将模型显示的东西推到视图处理机器上。
我自己也想尝试一下,我确实在 Zend 手册的 view helpers 部分中搜索了 partials 以找到它,即使示例有点薄。
祝我好运基思
我们想要更多详细信息,即侧边栏中显示的内容类型、显示方式(即使用或其他) <ul>
、<div>
从数据库中检索的内容等。
在同样使用该格式的CodeIgniterModel, View, Controller
中,我们创建了一个名为“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>