0

我在一个项目中使用 Zend Framework 1.12。我遇到了一些问题Zend_Form。有些字段是在执行时动态生成的,但它们Zend_Form是静态的,是在创建时预定义的元素。

因此,当发送表单时,验证不起作用,因为添加了新字段并且发送的表单与创建的表单不匹配。

那怎么适应?

4

2 回答 2

1

您应该尝试以下解决方案:发送表单后,获取$_POST数组,然后检查您拥有哪些字段/值并使用此字段/验证创建/修改表单对象。

于 2013-08-27T15:20:26.067 回答
0

I would have done this way :

class MyForm extends Zend_Form
{
    public function init()
    {
        //... Create here the basic elements

    }

    public function initFromPostValue( $post )
    {
        if( array_key_exists( 'dynamicsField', $post ) ) {
            $el = $this->createElement( 'select', 'dynamicsField' )
                ->setValidators( array( ... PUT your validators here ) );

            $this->addElement( $el );
        }

    }
}

In the validation action :

public function validationAction()
{
    $form = new MyForm();
    $form->initFromPostValue( $_POST );

    if( $form->isValid( $_POST ) ) {
        // Form is valid
    } else {
        // Form is invalid
    }
}
于 2013-08-27T17:38:55.323 回答