CakePHP布局中的动态菜单内容

CakePHP布局中的动态菜单内容,cakephp,layout,menu,navigation,Cakephp,Layout,Menu,Navigation,我试图做的是在CakePHP布局(default.ctp)中放置两个动态导航菜单。主菜单应具有多个级别(具有下拉功能)。辅助菜单是在左侧边栏中显示主菜单下拉内容的菜单 我已经阅读了CakePHP文档,但是我不知道如何在布局中匹配这些菜单。我知道视图层中有4个不同的部分(如中所述): 观点 元素 布局 助手 但根据我现在所掌握的知识,我认为这些部分都不能满足我的需要。导航菜单是一个仅在布局中加载的部分,因此它不是元素或辅助对象。那么什么是最佳实践 。。。在哪里创建菜单树 。。。在布局文件中的

我试图做的是在CakePHP布局(default.ctp)中放置两个动态导航菜单。主菜单应具有多个级别(具有下拉功能)。辅助菜单是在左侧边栏中显示主菜单下拉内容的菜单

我已经阅读了CakePHP文档,但是我不知道如何在布局中匹配这些菜单。我知道视图层中有4个不同的部分(如中所述):

  • 观点
  • 元素
  • 布局
  • 助手
但根据我现在所掌握的知识,我认为这些部分都不能满足我的需要。导航菜单是一个仅在布局中加载的部分,因此它不是元素或辅助对象。那么什么是最佳实践

  • 。。。在哪里创建菜单树
  • 。。。在布局文件中的何处/如何回显

有人能澄清我的问题吗?提前谢谢!;)

您可以在元素文件夹中创建菜单树 例如

element/top_menu.ctp
元素/侧面菜单.ctp

现在,您可以在动态条件下根据需要在布局中包括这些菜单

比如说#


这是您的条件……您可以使用Elemnts文件夹中的菜单作为您的要求……

好的,很清楚!但是如何在top_menu.ctp中动态构建菜单?我想从数据库中取出数据,所以我想我不应该在.ctp文件中连接数据库?如果我这样做,正确的MVC工作方式就完全混乱了…在控制器的操作方法&set value$this->set('menu',$menu\u name)中从数据库检索菜单值;并通过使用foreach循环检索值,在top_menu.ctp中显示这些值。。
if(#user is admin)
{
   echo $this->Element('top_menu');
}
else if(# user is registered)
{
   echo $this->Element('side_menu');
}
else
{
     echo $this->Element('top_menu');
    echo $this->Element('side_menu');
}