目前我正在使用这种方式在ZEND_FORM
中获取用户的“角色”。
$identity = Zend_Auth::getInstance()->getIdentity();
对于每个表单字段,我在添加表单字段前检查角色,如:
if($identity->role=='admin') $form->addElement...
有更聪明的方法吗?比如addElement的选项?
最诚挚的问候 Frgtv10
答案 0 :(得分: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 :(得分:1)
您还可以删除现有元素:
if($identity->role != 'admin') $form->removeElement('name');