2012-03-05 79 views
2

我正在考慮把它放在AppController中,但這意味着我必須在每個視圖文件中爲此使用相同的代碼。我想把它放在標題中,以便在每個視圖上顯示。我也希望在那裏有一些邏輯,如果我登錄,然後只顯示註銷鏈接和我的用戶菜單。同樣,如果我沒有登錄,然後顯示註冊和登錄鏈接。任何人都可以給我一隻手,或者指向正確的方向嗎?謝謝!包含CakePHP登錄/註銷鏈接的最佳方式是什麼?

回答

5
//layout .ctp 

<div class="header"> 
<?php 
if($this->Session->read('Auth')) { 
    // user is logged in, show logout..user menu etc 
    echo $this->Html->link('Logout', array('controller' => 'users', 'action' => 'logout')); 
} else { 
    // the user is not logged in 
    echo $this->Html->link('Login', array('controller' => 'users', 'action' => 'login')); 
} 
?> 
</div> 

是單向的。如果代碼位於您的layout中,它將出現在每個view中,否定冗餘代碼。

+0

哦,我明白了。 Layout.ctp是要走的路。 layout.ctp的伴隨控制器是什麼? – Strawberry 2012-03-05 11:21:20

+0

每個視圖使用佈局;您根據需要定義。沒有專門針對'layout'的控制器。默認佈局文件被稱爲'default.ctp',默認情況下所有視圖都使用。您可以通過在控制器中使用'$ this-> layout ='layout_name'''來調整每個視圖的佈局(或者我相信)。 – Ross 2012-03-05 11:26:37

0

蛋糕3,您需要使用:

$this->request->session()->read('Auth') 
相關問題