隐藏用户xyz的一些表单字段的方法

时间:2012-12-06 15:55:44

标签: zend-framework zend-form

目前我正在使用这种方式在ZEND_FORM中获取用户的“角色”。

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

对于每个表单字段,我在添加表单字段前检查角色,如:

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

有更聪明的方法吗?比如addElement的选项?

最诚挚的问候 Frgtv10

2 个答案:

答案 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');