2012-12-06 87 views
1

的某些表單域的方式我正在使用此方式獲取ZEND_FORM中用戶的「角色」。隱藏用戶xyz

$identity = Zend_Auth::getInstance()->getIdentity(); 

對於每一個表單字段我添加表單域像前檢查的作用:

if($identity->role=='admin') $form->addElement... 

有沒有一種更聰明的辦法做到這一點?比如addElement的選項?

問候 Frgtv10

回答

2

你這樣做可能會導致混亂的方式。它有可能你可以在這裏使用2種形式。其中一個主要內容包含所有人共有的內容,以及從第一個內容繼承而來併爲管理員添加功能的內容。這將更容易維護,因爲您只是根據角色實例化正確的表單,因此您可以在表單中的任何地方檢查角色,而不是查找任何東西。

所以在你的控制器您可以:

if($identity->role=='admin'){ 
    $form = new Form_WhateverAdmin(); 
} else { 
    $form = new Form_WhateverNotAdmin(); 
} 

哪裏

Form_WhateverNotAdmin extends Zend_Form 

Form_WhateverAdmin extends Form_WhateverNotAdmin 
1

您也可以刪除現有elemets:

if($identity->role != 'admin') $form->removeElement('name');