2013-09-26 66 views
0

我已經查看了所有內容,並且找到了有限的答案,也許是因爲它非常明顯,從不需要提問。在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'; 
    } 

回答

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的幫助!

相關問題