菜单和数据库中的所有页面内容


Menu and all pages content from database

我正在编写带有一些cms功能的简单网站。最好将所有菜单项和页面内容保存在数据库中。

我有表格,有idnameparent_id和一个content字段。将来,我可能会将内容移动到content表中,以便使用 fk 将多个内容移动到菜单项。但这里的情况并非如此。

问题是:

  1. 我需要菜单表中的 URL 字段吗?
  2. 我还需要什么才能让它工作?每个页面都应该有自己的控制器吗?我是zend framework初学者,所以请给我一些指示。提前谢谢。

让我们从问题 2 开始:每个页面都不需要自己的控制器。如果您的页面是静态的,您甚至可以使用单个操作加载每个页面。对于更动态的处理,您可以对每个页面使用单独的操作。

在任何情况下,请确保以有意义的方式将代码结构化为控制器和操作。例如,在您的CMS中,用户可以编辑,创建或删除帖子。然后你可以创建一个PostController,在其中写一个editActioncreateActiondeleteAction

您可以将 URL 存储在表中,但不一定必须这样做。

单一操作方法(主要用于静态内容)

确保页面idname存储在 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
    }
}