Symfony1 Symfony 1.4中的嵌入式表单:为什么我必须使用包装器?
我正在构建一个表单,允许我使用symfony1.4同时编辑给定表的所有行。 为此,我使用了嵌入式表单。我的解决方案是可行的,但我想知道为什么我必须为我的嵌入表单使用包装器 这是我的密码:Symfony1 Symfony 1.4中的嵌入式表单:为什么我必须使用包装器?,symfony1,symfony-1.4,symfony-forms,Symfony1,Symfony 1.4,Symfony Forms,我正在构建一个表单,允许我使用symfony1.4同时编辑给定表的所有行。 为此,我使用了嵌入式表单。我的解决方案是可行的,但我想知道为什么我必须为我的嵌入表单使用包装器 这是我的密码: class FooCollectionForm extends BaseForm { public function configure() { $wrapperForm = new sfForm(); foreach ($this->getOption('bar') as
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; ?>
除了我的输入具有相同的名称和id之外,它几乎可以正常工作
我发现setNameFormat的参数很难看,但它似乎就是这样工作的。你同意还是有更好的解决方案
是的,Symfony和嵌入式表单有点混乱
但是,是的,有一个更好的解决方案,您应该让表单nameformat符合框架的要求
下面是fabien和ryan关于embedForm()/EmbedRelationship()函数、嵌入表单背后的逻辑以及呈现嵌入表单的文章
<?php foreach ($form->getEmbeddedForms() as $subForm): ?>