我正在项目中使用Zend Framework 1.12。我对Zend_Form
有些问题。某些字段是在执行时动态生成的,但Zend_Form
是静态的,是创建时预定义的元素。
因此,在发送表单时,验证不起作用,因为添加了新字段并且发送的表单与创建的表单不匹配。
如何改编?
答案 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
}
}