2012-08-13 55 views
2

我是很新,蛋糕和現在用的蛋糕2.0和我紛紛出爐自己的看法,控制器等..只顯示操作按鈕來登錄管理員的CakePHP中

我想要做的就是進入我的查看並打包圍繞EditDelete操作的一些邏輯,並僅顯示它們以登錄管理員。

這聽起來像是正確的做法嗎?我已經鎖定了這些操作,以便只有管理員可以訪問它們,但我不想顯示非管理員這些按鈕。

此外,我不認爲有一個正常的用戶和管理員單獨的看法是正確的做法,但我可能是錯的。

回答

3

您可以嘗試使用下面的代碼片段在你的AppController中的beforeFilter()方法:

function beforeFilter() 
{ 
    $role = $this->Auth->user('role'); //If you are using Auth 
    //$this->Session->read('User.role'); // If you are using a normal login session. 
    if ($role == 'author' || $role == 'admin') { 
     $this->set('role', $role); 
    } 

    if($role == 'admin') 
    { 
     $this->set('is_admin', true); 
    } 
    else 
    { 
     $this->set('is_admin', false); 
    } 
    /***** your remaining code *******/ 
} 

而在你的看法只需使用以下內容:

if($is_admin) 
{ 
     $this->Html->link('Admin Link', 'controllers/view'); 
} 
+0

完美!謝謝!這種方法是皺眉還是很常見? – bigmike7801 2012-08-14 17:39:02

+1

@ bigmike7801這是Ruby On Rails的常見做法,所以我想可以在CakePHP等其他MVC框架中使用它。 – 2013-07-25 16:54:52

2

可以將一個變量傳遞給視圖並檢查它以顯示該命令。

控制器:

... 
$this->set('admin', true); //user is an admin and should view the links 
... 

觀點:

... 
if ($admin){echo $this->Html->link('Edit', array('action' => 'edit'))} 
...