模型视图控制器-PHP-mvc框架中的两种菜单


model view controller - PHP - Two kind of menu in mvc framework

我使用PHP Phalcon,我想实现两个不同的菜单。第一个是普通用户,第二个是管理员。我想要两个菜单模板来轻松地展开菜单。

现在我有这样的东西:

//Main template:
[...]
if (session->role == 'admin')
    include 'adminmenu.volt'
elseif (session->role == 'user')
    include 'usermenu.volt'
 {{ get_content() }} //from upper templates
[...]

(未登录用户没有菜单。)

我认为这并不完全正确。首先,我不知道如何突出主动位置。其次,我想从控制器控制菜单,例如通过更改数据库中的某些内容来添加特殊选项。有合适的方法吗?我想在不使用javascript、模块或微服务的情况下获得简单的解决方案

您可能正在查找部分。在你的基本模板中,你会想要这样的东西:

{% if this.session->get('role') == 'admin' %}
    {{ partial('adminmenu') }}
{% else %}
    {{ partial('usermenu') }}
{% endif %}

你必须在你的视图上设置你的部分目录:

//This is a path relative to your views directory.
//The following is accurate if your partials directory is a child of your views directory.
$this->view->setPartialsDir('partials');

完成后,执行{{partial('name')}}将引用partials目录中的name.volt文件。

至于强调你的立场。你的部分可以打电话给调度员,询问控制器和操作是什么:

{{ this.dispatcher.getControllerName() }} and {{ this.dispatcher.getControllerName() }}

您可以根据href属性检查这些值,如果为true,则设置活动标志。