我正在构建一个表单,允许我使用Symfony 1.4同时编辑给定表的所有行。 为此,我使用了嵌入式表单。我的解决方案正在工作,但我想知道为什么我必须为我的嵌入式表单使用包装?Symfony 1.4中的嵌入式表单:为什么我必须使用包装?
这里是我的代码:
class FooCollectionForm extends BaseForm
{
public function configure()
{
$wrapperForm = new sfForm();
foreach ($this->getOption('bar') as $bar)
{
$form = new myForm();
$form->widgetSchema->setNameFormat('foo_collection['.$bar['label'] . '][%s]');
$wrapperForm->embedForm($bar['label'], $form);
}
$this->embedForm('foo_collection', $wrapperForm);
}
}
我发现setNameFormat的参数退出丑陋,但它似乎是它的工作方式。你是否同意或者有更好的解决方案?
我手动和这里建立我的表单的布局是环路我用来显示我的所有领域:
<?php foreach ($form->getEmbeddedForm('foo_collection')->getEmbeddedForm() as $subForm): ?>
<?php include_partial('form', array('form' => $subForm)) ?>
<?php endforeach; ?>
我再次找到这个丑陋,我仍然不明白为什么我可以”如果不使用包装表单,则可以这样做$form->getEmbeddedForm()
。
我试图做同样的形式,没有包装,像这样一个循环:
<?php foreach ($form->getEmbeddedForms() as $subForm): ?>
这几乎是除了事实上,我输入具有相同的名称和编号工作。