我在一个项目中使用 Zend Framework 1.12。我遇到了一些问题Zend_Form
。有些字段是在执行时动态生成的,但它们Zend_Form
是静态的,是在创建时预定义的元素。
因此,当发送表单时,验证不起作用,因为添加了新字段并且发送的表单与创建的表单不匹配。
那怎么适应?
我在一个项目中使用 Zend Framework 1.12。我遇到了一些问题Zend_Form
。有些字段是在执行时动态生成的,但它们Zend_Form
是静态的,是在创建时预定义的元素。
因此,当发送表单时,验证不起作用,因为添加了新字段并且发送的表单与创建的表单不匹配。
那怎么适应?
您应该尝试以下解决方案:发送表单后,获取$_POST
数组,然后检查您拥有哪些字段/值并使用此字段/验证创建/修改表单对象。
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
}
}