2017-08-15 28 views
0

我想改變導航欄的功能,所以在用戶登錄後,「註冊」和「登錄」的按鈕將被單一按鈕的「註銷」取代... 我試過這種方式,但沒有成功。如何在登錄或註銷CakePHP 3後更改導航欄功能?

C:\ XAMPP \ htdocs中\ jobfinds \ SRC \模板\元素\ menu.ctp

<div class="col_12 column"> 
     <ul class="menu">   
       <li> Home</li> 
      <?php if(isset($user['id'])): ?> 
       <li>Logout</li>    
      <?php else: ?>   
       <li>Login</li> 
       <li> Register</li>   
      <?php endif ; ?> 
     </ul>  
    </div> 

我試圖通過使用

$this->set('user',$user); 

傳遞$用戶查看在登錄方法但menu.ctp沒有認出它... 所以我怎麼能真正使它的工作?

+0

嘗試將數據存儲在$ _SESSION然後測試 –

回答

0

如果$this->Auth->user()沒有返回null,並且只需設置所需的任何變量,則需要檢查控制器。此外,如果您想在元素中使用它,則必須確保在所有操作中正確設置了此變量。所以最好的地方將是你的AppController中的beforeRender()動作。這裏是如何可能看起來像:

public function beforeRender(Event $event){ 

    /* --- */ 

    if (is_object($this->Auth)) { 
     if ($this->Auth->user() !== null) { 
      $this->set("userIsLoggedIn", true); 
     } else { 
      $this->set("userIsLoggedIn", false); 
     } 
    } 

    /* --- */ 

} 

而在你的元素:

<?php if(isset($userIsLoggedIn) && $userIsLoggedIn): ?> 
    <span>User is logged in</span> 
<?php else: ?> 
    <span>User is NOT logged in</span> 
<?php endif; ?> 
+0

它完美,但是當我按下的一個調試包的左下角的導航箭頭顯示我這個錯誤:致命錯誤:未捕獲錯誤:調用成員函數用戶()布爾中...致命錯誤:未捕獲錯誤:調用成員函數用戶布爾在C:\ xampp \ htdocs \ jobfinds \ src \ Controller \ AppController.php:50堆棧跟蹤:#0 C:\ xampp \ htdocs \ jobfinds \ src \ Controller \ ErrorController.php(54):App \ Controller \ AppController - > beforeRender(OB ject(Cake \ Event \ Event)) –

+0

另外我正在處理一個新問題,那就是我無法添加新的工作,即使所有的工作都沒問題。輸入傳遞給url,但保存操作沒有發生,沒有成功或失敗的閃光。 –

+0

我更新了有關您的第一條評論的答案 - 請再次查看控制器代碼。 – Szymon

相關問題