0

环境:PHP/5.5.6

我为侧面导航栏定义了 2 个 *.html 文件,一个用于角色 A,一个用于角色 B。两者之间有相似之处,我想将相似之处合并到一个文件中,并包含不同的选项基于角色,当用户登录时。

IE:

  • 侧导航栏有 5 个选项。选项 1 至选项 5。
  • 角色 A 有权访问选项 1 - 选项 4。
  • 角色 B 有权访问选项 1 - 选项 3 和选项 5。

当前用户登录时,调用的文件基于用户的角色,但如果角色被扩展,则每个角色都需要另一个文件。我不喜欢这种方法,因为它很臃肿,有时一个简单的更改会导致多个文件的更改 - 不好玩也不好看。

  1. 我考虑过将所有选项放在一个文件中,并使用 CSS display:block 或 :none 以及 javascript / jquery 向用户显示所需的功能。我不知道这是否是最好的方法。即使项目不可见,如果查看源代码,这些选项的 html 也是可见的。

  2. 我还考虑过 TinyButStrong 根据用户的角色将元素添加到列表中,并且该元素将包含在它自己的文件中。我不确定这种方法将如何工作,因为我正在寻找合并(添加)侧导航菜单上的单个项目。目前我正在使用 TBS 来包含整个 div 而不是单个元素,如下所述。

即侧导航选项html文件包含

<li><a href="/page5">Option 5</a></li>  <!-- another file would have option 4 -->

基础侧导航 *html

<ul>
    <li><a href="/page1">Option 1</a></li>
    <li><a href="/page2">Option 2</a></li>
    <li><a href="/page3">Option 3</a></li>
    <!-- insert Option 5 or Option 4 here -->
</ul>

哪种方法是最好的,或者我应该用另一种方法来解决这个问题?如果上述方法不好,为什么?

希望有人能在这个时候帮助和/或指导我。

4

1 回答 1

1

将 *.html 文件的内容移动到一个 *.php 文件中,然后使用 php 概述的角色在该文件中排除/包含菜单项。

例如:

<?php
    if (roles->getUserRole(reports)) { echo "<li><a href='/page5'>Reports</a></li>"; }
?>

当然你会使用你的 HTML 菜单结构和权限类等,上面只是一个例子......

于 2014-02-12T13:41:48.587 回答