我已经在一个个人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是为了表示目的,而不是为了建模数据。
我知道