1

好的,所以我使用 Zend Framework 1.12 和 Doctrine 2.2.3。这个Zend_Navigation类对我来说太简单和静态了,所以我正在实现自己的导航类。

场景如下:

我的应用程序要求导航菜单由标准(强制)项目(例如“主页”、“关于我们”等)以及用户特定项目(取决于用户角色)组成。动态菜单项存储在数据库(MySQL)中,我使用 Doctrine 作为我的 ORM 和 DBAL。

我正在尝试编写自己的导航类和部分视图来呈现其内容,并且在这样做时,我想知道我会遇到哪些性能问题,如果我在每次操作调用时查询数据库,然后将菜单项发回到页面?实现缓存的最佳方式是什么?我已经开始使用Zend_Registry_Namespace来存储我的菜单类(该类还存储当前活动的菜单项,我在部分视图中使用它来将 CSS 样式附加到该项目)。

请帮忙

4

1 回答 1

1

因此,您不是在开发用户可以创建自己的菜单结构和内容的 CMS。在这种情况下,您根本不应该将菜单信息存储在关系数据库中。与仅从 PHP 数组或配置文件中读取相同信息相比,从数据库中查询数据总是需要大量开销。您也不需要在会话中存储任何内容。事实上,这真的是一个简单的案例。让用户登录,确定用户的用户组/权限并以编程方式拼凑菜单。

您可以事先准备不同的菜单部分,然后只需合并数组并将最终数组发送到导航渲染器。

例子:

每个人都能得到的标准菜单:

$navArray = array(
    array(
        'controller' => 'index',
        'label' => 'Home',
    ),
    array(
        'controller' => 'about',
        'label' => 'About',

    )
);

然后根据 ACL 角色添加条目:

if ($user->getRole() == 'administrator')
{
    $navArray[] = array(
        'controller' => 'tools',
        'label' => 'Tools'
    );
}
于 2012-10-10T09:39:59.397 回答