【问题标题】:Navbar conditions in blade template user/admin Laravel刀片模板用户/管理员 Laravel 中的导航栏条件
【发布时间】:2017-09-06 19:28:31
【问题描述】:

对不起,如果这个问题对你来说很愚蠢,但我似乎无法弄清楚。我有两个函数isLoggedisAdmin。它们完美地工作,基于它们我想在我的导航栏上创建链接。我正在尝试的是这个

<li>Non Logged users link visible for everyone visiting the site</li>           
    @if(isLoggedIn() && !isAdmin())
        <li>LoggedIn Link</li>

            @if(isLoggedIn() || isAdmin())
                <li><a href="">Both</a></li>
            @endif      

        <li><a href="#">Logged In link</a></li> 
    @elseif(isAdmin())              

        <li><a href="#">Admin Dashboard</a></li>                                        
    @else           
        <li><a href="#">Login</a></li>
    @endif

基本上我想在这里创建的是

  1. 所有登录 users 而不是 admins 的人都有一些对管理员不可见的链接。
  2. 所有登录users(即admins)的人都拥有仅对他们可见的不同链接。
  3. 所有登录users的用户,无论admins还是普通用户,都可以在自己的链接上添加链接。

@if -> (BaseController::isLoggedIn() && !BaseController::isAdmin()) 检查用户是否登录但不是管理员

然后我在里面放置了另一个如果应该在Admins 和用户上显示&lt;li&gt;&lt;a href=""&gt;Both&lt;/a&gt;&lt;/li&gt;,因为他们已经登录了......但是我只在登录User 时看到这个链接。在 Admin 上不可见。

我知道 ACL,但我真的不需要 acl。我想在这样的条件下完成。

如何构造条件?

【问题讨论】:

  • “Both”链接不能在您拥有它的位置。在 if 块中,您已经确定用户不是管理员,因此您不可能让 isAdmin() 在那里返回 true。
  • 是的,但是如果我希望里面的链接在两个角色中都可见,可以在哪里?
  • 只使用 isLogged() 吗?这对两者都不是吗?如果用户登录,甚至有Auth::check() 将返回 true,但我不确定 isLogged() 在做什么
  • isLogged() 两者都返回 true.. 例如,如果用户登录或未登录,则返回 true.. 不检查是否是管理员,我仍然需要检查 isAdmin

标签: laravel blade


【解决方案1】:

假设您的两个辅助函数正常工作,这样的事情会更干净,工作得更好..

@if(isLoggedIn())
    // HTML for all logged in users

    @if(isAdmin())
        // HTML for admins only
    @else
        // HTML for non-admins only
    @endif

@endif

【讨论】:

  • 谢谢。它的作品.. 我想我可以通过刀片模板随意安排它。
【解决方案2】:
@if(isLoggedIn() || isAdmin())
    <li><a href="">Both</a></li>
@endif      

把它放在底部

@if(isLoggedIn() && !isAdmin())

阻止它显示

编辑:试试这个

@if(isLoggedIn() && !isAdmin())
    <li>LoggedIn Link</li>
@endif
@if(isLoggedIn() || isAdmin())
    <li><a href="">Both</a></li>
@endif      


@if(isAdmin())              

    <li><a href="#">Admin Dashboard</a></li>                                        
@else           
    <li><a href="#">Login</a></li>
@endif

【讨论】:

  • 但是如果我把它放在if/elseif/else之外的底部,链接的末尾就会显示出来。我希望它不会在最后。
  • 感谢您的帮助。赛义德的答案有点干净。 +1
猜你喜欢
  • 2018-02-28
  • 2013-04-29
  • 1970-01-01
  • 2013-05-08
  • 2013-11-03
  • 2023-03-24
  • 2017-04-03
  • 2018-05-31
相关资源
最近更新 更多