Zend框架:如何允许cms用户从管理面板创建菜单并链接到适当的页面


Zend Framework: How to allow cms users to create menus and link to appropriate pages from admin panel?

我已经在一个个人cms项目上工作了很长时间,原因是我厌倦了为每个项目从头开始创建新的数据库层和组件。所以我决定在zend框架中开始一个小的cms。

现在我到了一个点,我应该让用户(未来的客户端)来管理网站创建他们的menus, routes等,并将其指向存储在数据库中的真实页面。

我有几个模块,如文章,内容,画廊等在我的项目中,我做了文章和页面之间的分离。对于这篇文章来说,我认为它很直接。对于页面来说,这可能很棘手。

所以一个页面被保存在一个表中(带有html标签)并注入到视图中。由于有涉及的路线,我开始对如何链接与Zend_Navigation和数据库中的实际页面创建的菜单感到困惑。例如菜单:

about us           products           contact us
the team           productname 1      local
mission statement  productname 2      international

有不同的路径,如

/about-us          /products/list            /contact-us
/about-us/team     /products/productname1    /contact-us/local
/about-us/mission  /products/productname2    /contact-us/international

请记住,所有的页面都来自一个表,并通过PageController的单个视图呈现?

为具体问题:

问题1这种方法是否有效?
问题1.1如果不是,还有什么更好的设计?
问题2 Zend_Navigation保存在哪里?因为应该有一个用户修改路由和菜单的界面。
问题2.1是否可以使用Zend_Config_Xml_Writer?
问题2.2如果是,这是最佳实践吗?

根据我的经验,解耦导航和页面/文章等对于最终用户来说通常更容易理解和管理。

虽然你可以构建一个更复杂的系统,与zend_navigation接口,保存到配置文件等,这将增加一层可能是不必要的复杂性,当你可以在一个单独的表中建模你的导航-即树模式,每项一行-集文本,标题,路由,目标窗口等

在CMS方面,你可以提供控件来"帮助"用户找到你的页面、产品等的路由。

这可以由你的应用程序用视图助手或公共部分呈现——如果需要的话,此时将你的数据转换成zend_navigation对象。

TLDR;摘要:

在应用程序级别使用zend_navigation是为了表示目的,而不是为了建模数据。

我知道