我已经查看了所有内容,并找到了有限的答案,也许是因为它是如此明显以至于它永远不需要被问到。
我正在尝试创建一个表单。此表格的目的是允许会员向网站推荐其他人。您需要填写 first_name、last_name 和 email。问题是我希望他们能够一次发送多封电子邮件。所以我可能会有另一个按钮,上面写着“添加另一个”,然后它会复制表单(名字、姓氏和电子邮件)。
我看过集合,我认为这是一个很好的选择,因为它允许您允许添加并允许您制作原型,但我不确定如何使其工作。我也考虑过嵌入,但我不是在寻找立即响应或验证,所以我认为这不是解决方案。
我知道将使用 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');
}
}
这是类型
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';
}