我已經查看了所有內容,並且找到了有限的答案,也許是因爲它非常明顯,從不需要提問。在Symfony2中根據請求複製表單的最佳方法
我想創建一個表單。這種形式的目的是讓會員推薦其他人到現場。你需要填寫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');
}
}
這是類型
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';
}