【发布时间】:2014-10-20 09:41:37
【问题描述】:
我是 Zend 框架的新手,我想做的是创建一个表单,除了简单的输入和选择字段之外,它还将包含使用 jquery 添加多个输入字段,例如:
和另一个可以接受多对选择和输入的表单元素,如下所示:
这些将使用 jquery 在客户端插入。我如何在 Zend 中使用表单元素来实现这一点?
【问题讨论】:
标签: jquery forms zend-framework dynamic subform
我是 Zend 框架的新手,我想做的是创建一个表单,除了简单的输入和选择字段之外,它还将包含使用 jquery 添加多个输入字段,例如:
和另一个可以接受多对选择和输入的表单元素,如下所示:
这些将使用 jquery 在客户端插入。我如何在 Zend 中使用表单元素来实现这一点?
【问题讨论】:
标签: jquery forms zend-framework dynamic subform
我已经完成了您在某些项目中想要实现的目标,而我发现的最佳方法是使用子表单。以下是一些可能对您有所帮助的指南。
配置父表单
public function __construct($wine = null)
{
parent::__construct();
$this->setName('parent-form'); // you can set any name
$this->setIsArray(true);
$this->_initForm();
}
在表单中添加尽可能多的子表单
protected function _initForm(){
$this->clearSubForms();
$subForm = new Application_Form_Subform(1);
$subForm->removeDecorator('Form');
$this->addSubform($subForm,'subform-'.1);
$subForm = new Application_Form_Subform(2);
$subForm->removeDecorator('Form');
$this->addSubform($subForm,'subform-'.2);
}
配置子表单
public function __construct($key) {
parent::__construct();
$this->setElementsBelongTo("parentform[subform][$key]");
$this->setIsArray(true)->setName("subform")->setAttrib('enctype', 'multipart/form-data');
$this->_initForm();
}
在表单视图中回显子表单
<?php
foreach($this->element->getSubforms() as $key => $subForm){
echo $subForm;
}
?>
使用 Jquery 在表单视图上动态添加元素
我不会在这里提供任何代码。但我通常做的是为子表单添加一个隐藏模板,以便我可以从中克隆。您还需要做的是调整子表单输入的名称属性的索引。
获取控制器上的数据
if ($request->isPost()) {
$data = $request->getPost('parentform');
if ($form->isValid($data)) {
foreach ($data['subform'] as $subformInfo) { // loop through each subform input
// do something with your data
}
}
【讨论】: