使用数据库表创建 Zend_Navigation
我现在使用 xml 文件来创建 Zend 导航,
$navContainerConfig = new Zend_Config_Xml(APPLICATION_PATH . '/configs/navigation.xml', 'nav');
$navContainer = new Zend_Navigation($navContainerConfig);
我的问题是,如果可能的话,我可以使用数据库表而不是 xml 文件来创建 zend_navgation 吗
?请给我一些关于如何使用数据库表制作 Zend_Navigation 的示例吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
创建一个表,其中的列等于 MVC 和 URI 页面可能的组合属性 有两个例外:添加
id
列,而不是页面列,而是添加列parent_id
。子页面应在此处包含其父页面的 ID。然后使用
Zend_Db_*
中的任何一个来获取该表中的所有数据。结果将是导航中所有页面的平面数组。您可以将其用作 容器 并将其提供给Zend_Navigation
。但是,如果您有嵌套导航,则该数组将无法执行,因为该数组将是扁平的。 遍历数组使其根据parent_id关系嵌套。然后将其提供给Zend_Navigation
。之后,您只需使用 导航助手来呈现导航。由于您的导航可能不会经常更改,因此您应该缓存从数据库中获取的内容。每次显示页面时,无需对数据库进行代价高昂的往返。
Create a table with columns equal to the combined properties possible for MVC and URI pages with two exceptions: add an
id
column and instead of having a pages column, you add a columnparent_id
. Subpages should contain the id of their parent page in here.Then use any of
Zend_Db_*
to fetch all data in that table. The result will be a flat array of all pages in your navigation. You can use this as container and feed it toZend_Navigation
. However, if you have nested navigation that array won't do, because the array will be flat. Traverse the array to make it nested according to the parent_id relations. Then feed it toZend_Navigation
.After that, you just have to use one of the Navigation Helpers to render the navigation. Since your navigation is likely not changing that often, you should cache the fetching from the database. There is no need to do a costly roundtrip to the database each time the page is shown.
假设您有这个表:
具有这些值:
您可以这样做:
现在请小心,因为这个“设计”不允许您拥有子菜单项,因此您需要使用它,但希望它能让您更轻松地开始。
Asuming you have this table :
Wtih these values :
You can do this :
Carefull now couse this "design" whont allow you to have submenu items so you'll need to play around with it , but hopefully it will get you started easyer .
我推荐以下解决方案之一:
我认为可写 XML 配置是最好的。写入操作并不常见,也不需要快如闪电,而且您可能会缓存 HTML 输出,因此读取量很小)。当您假设每个项目都有其唯一的 ID 时,使用迭代器很容易实现。
I'd recommend one of the following solutions:
Writable XML config is the best in my opinion. Write operations are not so common and don't need to be lightning fast, and you will probably cache the HTML output, so the read is minimal). Easy to implement using iterators, when you assume each item has it's unique ID.
你可以做一些这样的功能:)
You can do some function like this :)