环境:PHP/5.5.6
我为侧边导航栏定义了 2 个 *.html 文件,一个用于 Angular 色 A,一个用于 Angular 色 B。两者之间有相似之处,我想将相似之处合并到一个文件中,并包括当用户登录时,基于 Angular 色的不同选项。
即:
- 侧边导航栏有 5 个选项。选项 1 到选项 5。
- Angular 色 A 可以访问选项 1 - 选项 4。
- Angular 色 B 可以访问选项 1 - 选项 3 和选项 5。
当前用户登录,调用的文件基于用户的 Angular 色,但如果 Angular 色被扩展,则每个 Angular 色将需要另一个文件。我不喜欢这种方法,因为它会膨胀,有时一个简单的更改会导致多个文件发生更改 - 既不好玩也不好看。
我考虑过将所有选项放在一个文件中并使用 CSS display:block 或 :none 与 javascript/jquery 一起显示 用户所需的功能。我不知道这是不是最好的 方法。即使元素不可见,但这些元素的 html 如果查看源代码,选项是可见的。
我还考虑过 TinyButStrong 将元素添加到基于 用户的 Angular 色,元素将包含在它自己的文件中。我 我不确定这种方法是如何工作的,因为我正在寻找 合并(添加)侧面导航菜单上的单个元素。目前我是 使用 TBS 包含整个 div 而不是详细的单个元素 下面。
ie side nav option 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>
哪种方法最好,或者我应该采用另一种方法吗?如果上述方法不好,为什么?
希望此时有人可以帮助和/或指导我。
最佳答案
将 *.html 文件的内容移动到一个 *.php 文件中,然后使用 php 概述的 Angular 色在该文件中排除/包含菜单项。
例如:
<?php
if (roles->getUserRole(reports)) { echo "<li><a href='/page5'>Reports</a></li>"; }
?>
当然你会使用你的 HTML 菜单结构和权限类等,上面只是一个例子....
关于php - 如何根据用户的角色从侧面导航栏中隐藏/删除选项? (最佳实践),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21729457/