1

目前我正在使用这种方式来获取用户在ZEND_FORM.

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

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

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

有没有更聪明的方法来做到这一点?比如 addElement 的一个选项?

最好的问候 Frgtv10

4

2 回答 2

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
于 2012-12-06T16:02:31.353 回答
1

您还可以删除现有的元素:

if($identity->role != 'admin') $form->removeElement('name');
于 2012-12-07T15:37:35.550 回答