2017-04-11 57 views
0

對不起,如果這個問題是愚蠢的,但似乎我無法弄清楚。我有兩個功能isLoggedisAdmin。他們完美的工作,並基於他們我想創建我的導航欄上的鏈接。我想要是這個刀片模板中的Navbar條件用戶/管理Laravel

<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()),但檢查用戶是否登錄而不是管理

然後裏面我已經放在另一個是否應顯示<li><a href="">Both</a></li>Admins和用戶,因爲他們已登錄...但我只看到此鏈接登錄User。在Admin不可見。

我知道ACL的,但我並不真正需要acl。我想用這樣的條件來完成這個。

如何構造條件?

+0

「雙方」鏈接不能在你擁有它的地方。在那裏,如果你已經確定用戶不是管理員,那麼你不可能讓isAdmin()在那裏返回true。 –

+0

是的,但是如果我想讓裏面的鏈接在兩個角色中都可見,哪裏可以? – VLS

+0

只需使用isLogged()?這不會對兩者都有效嗎?甚至有'Auth :: check()'這將返回true,如果用戶登錄,我不知道什麼是Logged()正在做什麼 –

回答

1

假設你的兩個輔助功能正常工作,像這將是更清潔,更好的工作..

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

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

@endif 
+0

謝謝。它的工作原理..我想我可以通過刀片模板來安排它。 – VLS

1
@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 
+0

但這種方式,如果我把它放在if/elseif/else之外的底部顯示在鏈接的末尾。我希望它不在最後。 – VLS

+0

感謝您的幫助。賽義德的答案有點乾淨。 +1 – VLS