动态创建Zend表单元素

时间:2013-08-27 12:49:24

标签: zend-framework zend-form-element

我正在项目中使用Zend Framework 1.12。我对Zend_Form有些问题。某些字段是在执行时动态生成的,但Zend_Form是静态的,是创建时预定义的元素。

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

如何改编?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

我会这样做的:

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 );
        }

    }
}

在验证操作中:

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

    if( $form->isValid( $_POST ) ) {
        // Form is valid
    } else {
        // Form is invalid
    }
}