我已经全神贯注地找到了有限的答案,也许是因为它非常明显,以至于它永远不需要被问到。
我正在尝试创建一个表单。此表单的目的是允许成员向网站推荐其他人。您需要填写first_name,last_name和email。问题是我希望他们能够一次发送多封电子邮件。所以我可能会有另一个按钮,说“添加另一个”,然后它复制表单(first_name,last_name和email)。
我已经查看了集合,我认为这是一个很好的选择,因为它允许你使用allow_add并允许你进行原型设计,但我不知道如何让它工作。我也考虑过嵌入,但我不是在寻找立即响应或验证,所以我不认为这是解决方案。
我知道将使用javascript来完成这项工作。
到目前为止我...如果我亲近,请告诉我。
这就是它所在的地方。
public function referralFormAction(Request $request, $hash)
{
if (isset($hash)) {
$referral = new Referrals();
$referralForm = $this->createFormBuilder($referral)
//I know that 'email' needs to be replaced with something different, an object?
->add('email', 'collection', array(
'required' => false,
'allow_add' => true,
'prototype' => true,
//Not sure if I can set type like this.
'type' => new ReferralType(),
))
->getForm();
$referralForm->handleRequest($request);
if ($referralForm->isValid()) {
//do something
}
return $this->render('FuelFormBundle:Default:referralForm.html.twig', array('referralForm' => $referralForm->createView()));
} else {
throw $this->createNotFoundException('The product does not exist');
}
}
这是Type
class ReferralType extends AbstractType{
public function buildForm(FormBuilderInterface $builder, array $options){
$builder->add('first_name', 'text', array());
$builder->add('last_name', 'text', array());
$builder->add('email', 'email', array());
$builder->add('Send', 'submit');
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Fuel\FormBundle\Entity\Referrals',
));
}
public function getName()
{
return 'referral';
}
答案 0 :(得分:0)
关于How to Embed a Collection of Forms的文档将教您如何完全按照您的需要进行操作;这是非常不言自明的解释。
答案 1 :(得分:0)
对此的答案非常悲伤。你在上面的问题中看到的是正确的,但是我没有在表单中填充任何数据,因此没有任何显示。因此,故事的寓意是要么需要填充数据以便显示某些内容,要么添加JavaScript以完成该功能,以便填充文本框。
我确实最初在Symfony2集合参考
中找到了这一行在这两种情况下,除非您的电子邮件数据,否则不会呈现任何输入字段 数组已包含一些电子邮件。
但是我忽视了它,因为我当时理解它意味着不同的东西。
我确实发现这是一个巨大的帮助https://groups.google.com/forum/#!topic/symfony2/DjwwzOfUIuQ
当我无法弄清楚我的问题时,我给他发了消息,他回复了另一个有用的信息。
$form = $this->createFormBuilder()
->add('foo', 'foo_type', array(
'data_class' => 'Foo',
)
->add('bar', 'bar_type', array(
'data_class' => 'Bar',
)
->getForm();
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$foo = $form->get('foo')->getData();
$bar = $form->get('bar')->getData();
// do stuff
}
非常感谢Bernhard的帮助!