我正在编写带有一些 cms 功能的简单网站。将所有菜单项和页面内容保存在数据库中会很好。
我有一个带有id
,name
和parent_id
一个content
字段的表。将来我可能会将内容移动到content
表格中,以便使用 fk 将多个内容添加到菜单项中。但这里不是这样。
问题是:
- 我需要菜单表中的 URL 字段吗?
- 我还需要什么才能让它工作?每个页面都应该有自己的控制器吗?我是初学者
zend framework
,所以请给我一些指示。提前致谢。
我正在编写带有一些 cms 功能的简单网站。将所有菜单项和页面内容保存在数据库中会很好。
我有一个带有id
,name
和parent_id
一个content
字段的表。将来我可能会将内容移动到content
表格中,以便使用 fk 将多个内容添加到菜单项中。但这里不是这样。
问题是:
zend framework
,所以请给我一些指示。提前致谢。让我们从问题 2 开始:每个页面都不需要自己的控制器。如果您的页面是静态的,您甚至可以使用单个操作加载每个页面。对于更动态的处理,您可以对每个页面使用单独的操作。
在任何情况下,请确保以一种有意义的方式将代码构造成控制器和操作。例如,在您的 CMS 中,用户可能会编辑、创建或删除帖子。然后,您可以创建一个PostController
在其中编写editAction
,createAction
和deleteAction
.
您可以将 URL 存储在表中,但不一定非要这样做。
单一动作方法(主要用于静态内容)
确保页面id
或name
存储在 GET 参数中。然后,您可以使用以下代码:
public function genericpageAction()
{
$thePageID = $this->_request->getParam('id');
// fetch the page content from the db based on $thePageID
// and pass it to the view
}
当然,在这里,如果您选择这种方法,您也可以匹配存储在表中的 URL。
多动作方法(对于更动态的处理,很可能是您想要的 CMS)
您可以为每个页面定义一个路由并在相应的操作中加载其内容。例如,对于要编辑帖子的页面:
class MyCMS_PostController extends Zend_Controller_Action
{
public function editAction()
{
// fetch the home page content
// do any further processing if necessary
}
}