Zend framework2 如果表单已签名,禁用表单中元素的最佳方法是什么?

Zend framework2 如果表单已签名,禁用表单中元素的最佳方法是什么?,zend-framework2,zend-form,Zend Framework2,Zend Form,我有一个逻辑,当用户可能会看到一个表单值,但如果它是“签名的”,就应该无法更改它。我想知道什么是最好的方式做它从控制器。现在,如果签名存在,所有元素都会经过循环并获得“disabled”属性。我想知道我是否可以在表单创建上应用更优雅的方法 这就是我所拥有的(并且“禁用”不会以这种方式分配给字段集): 编辑1-添加表单创建 $form = $sl->get('FormElementManager')->get($formName); $hydrator = new D

我有一个逻辑,当用户可能会看到一个表单值,但如果它是“签名的”,就应该无法更改它。我想知道什么是最好的方式做它从控制器。现在,如果签名存在,所有元素都会经过循环并获得“disabled”属性。我想知道我是否可以在表单创建上应用更优雅的方法

这就是我所拥有的(并且“禁用”不会以这种方式分配给字段集):

编辑1-添加表单创建

    $form = $sl->get('FormElementManager')->get($formName);

    $hydrator = new DoctrineHydrator($objectManager);

    $form->setHydrator($hydrator);

    if($isSigned)
    {
        $formElements = $form->getIterator();          
        foreach($formElements as $element )
        {                
            $element->setAttribute('disabled', 'disabled');
        }
    }

如何创建表单?我同意这不应该进入控制器。也许只是实现您自己的表单工厂,它将接受$isSigned作为属性。在内部,通过标准表单工厂创建表单,然后进行迭代。因为我有许多不同的表单,并且所有表单都有这个条件,所以我考虑使用某种形式的表单服务,其中所有表单都将被创建,并返回给控制器。