【问题标题】:How to hide/remove options from a side navigation bar based upon user's role? (best practice)如何根据用户的角色从侧面导航栏中隐藏/删除选项? (最佳实践)
【发布时间】:2014-03-10 20:50:39
【问题描述】:

环境:PHP/5.5.6

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

即:

  • 侧导航栏有 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>

哪种方法最好,或者我应该采用其他方法吗?如果上述方法不好,为什么?

希望此时有人可以帮助和/或指导我。

【问题讨论】:

  • 你看到'magnet'at the manual(向下滚动一点)它说“磁铁标签在字段有值时保持原样,当字段为空或为空时被删除字符串"
  • 您目前如何使用参数“file”在模板中包含 while div?你有从文件加载的模板吗?

标签: php html css tinybutstrong


【解决方案1】:

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

例如:

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

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

【讨论】:

  • 我喜欢这个,因为它听起来像我想要的。我犹豫不决,因为这个项目没有任何 php 与 html 混合的示例。目前 TBS 用于通过直接指向 *.html 来合并菜单。这可以通过直接指向php文件的路径来完成吗?
  • 我没有使用 TinyButStrong 的经验,但我认为您可以像加载 html 文件一样轻松加载 .php 文件。如果您正在使用模板引擎(当我阅读您的帖子时我错过了),那么您可以完全在调用 PHP 文件中构建您的 HTML 菜单结构,然后将其传递给 HTML 文件以使用 TBS 用作模板变量的任何内容进行显示。 ..
  • 好吧,它有点工作,但由于某种原因,我的回声的结尾 被删除了,这导致尾随的 "}?> 也显示在菜单项旁边。可能是由于链接中定义的 href 调用的 javascript 函数。向我显示的更改表明这将需要对网站进行大规模检修,因此在我有时间查看所有内容之前,我会的。我希望它会更容易修复,但我低估了构建时引用的位置数量。
猜你喜欢
  • 2017-06-24
  • 2023-01-02
  • 2019-04-15
  • 2018-09-20
  • 1970-01-01
  • 2010-12-14
  • 1970-01-01
  • 1970-01-01
  • 2016-11-02
相关资源
最近更新 更多