Forms Symfony动态形式
我从一个表单开始,它是手工制作的,因为它很复杂(它是一个javascript修改的表单,具有可排序的部分,等等)。问题是,现在我需要进行验证,而在使用sfValidator*类的操作中从头开始进行验证完全是一团糟 因此,我正在考虑使用sfForm来完成它,这样我的表单验证和错误处理就可以更容易地完成,这样我就可以在编辑和创建页面时重用这个表单 表格是这样的:Forms Symfony动态形式,forms,symfony1,dynamic,Forms,Symfony1,Dynamic,我从一个表单开始,它是手工制作的,因为它很复杂(它是一个javascript修改的表单,具有可排序的部分,等等)。问题是,现在我需要进行验证,而在使用sfValidator*类的操作中从头开始进行验证完全是一团糟 因此,我正在考虑使用sfForm来完成它,这样我的表单验证和错误处理就可以更容易地完成,这样我就可以在编辑和创建页面时重用这个表单 表格是这样的: <form> <input name="form[year]"/> <textarea name="
<form>
<input name="form[year]"/>
<textarea name="form[description]"></textarea>
<div class="sortable">
<div class="item">
<input name="form[items][0][name]"/>
<input name="form[items][0][age]"/>
</div>
<div class="item">
<input name="form[items][1][name]"/>
<input name="form[items][1][age]"/>
</div>
</div>
</form>
问题是表单的可排序部分可以在客户端从2个元素扩展到N个元素。因此,它具有可重新排序的可变项目数量
我如何处理这个问题
欢迎提出任何想法,谢谢。:) 我正在为重复字段使用嵌入式表单做类似的事情 在form类中,您可以执行以下操作:
$form_data = $this->getObject();
if (isset($form_data['items']) && is_array($form_data['items']))
{
$items_form = new BaseForm();
foreach ($form_data['items'] as $count => $values)
{
$form = new BaseForm();
$form->widgetSchema['name'] = new sfWidgetFormInputText();
$form->widgetSchema['age'] = new sfWidgetFormInputText();
$items_form->embedForm($count, $form);
}
$this->embedForm('items', $items_form);
$this->validatorSchema['items'] = new sfValidatorPass(array('required' => false));
}
除此之外,您还可以创建一个ItemForm类,并将小部件/验证模式定义放入其中,然后嵌入此表单的多个实例化。为以后的开发提供了更多的抽象。