我正在关注this线程来创建表单,并且当表单元素的数目已知时它正在工作。现在我必须根据用户选择创建表单域。如何在zend中创建表单
例如:
<?php
class Form_MyForm extends Zend_Form {
public function __construct($options = null) {
parent::__construct($options);
// Set the method for the display form to POST
$this->setMethod('post');
$elements = array();
// Get user input to create elements
$fields = $options['columns'];
// Create form elements
for($i = 0; $i < count($fields); $i++) {
$element = $this->CreateElement('text', 'field'.$i);
$element->setLabel($fields[$i]['name']);
$elements[] = $element;
}
$this->addElements($elements);
$this->setElementDecorators(array('ViewHelper'));
$this->setDecorators(array(array('ViewScript', array('viewScript' => 'myform-form.phtml'))));
} // end construct
} // end class
?>
I can render each element separately但现在我不知道如何通过循环来呈现myForm的-form.phtml这些元素。我不得不循环,因为号字段没有在开始时知道..
感谢
我不完全Zend_Form的行家(其实我恨它),但也许你应该将你的代码移动到另一个方法中(比如'configureForm()'并让它接受一个字段数量的参数? – netcoder 2011-06-11 20:34:38
你的'$ columns'变量是什么?我看不到它在哪里创建。 – Marcin 2011-06-12 01:39:23
@Marcin :对不起,它是错字,它实际上是** $ field **数组,它包含表单域的标签,例如:'array('FirstName' ,'LastName','BirthDate');'请再次查看问题。谢谢 – Student 2011-06-12 04:46:44