2013-03-13 161 views
1

我知道在這個主題的網絡中的各種論壇上已經有不少文章。 然而,非解決方案實際上爲我工作,雖然這個問題似乎很簡單。Symfony2默認選擇單選按鈕

我要預先選擇一個單選按鈕即時通訊我的Symfony2形式:

我的實體:

namespace Helloworld\CoreBundle\Entity; 

class User { 
    ... 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="gender", type="string", length=6) 
    * @Assert\Choice(choices = {"male","female"}, multiple = false, message = "You must choose a valid gender.") 
    */ 
    protected gender; 

    ... 
} 

(getter和setter都存在)

我的PHP代碼:

$user = new User(); 
$user->setGender('male'); 

$form = $this->createFormBuilder($user) 
    ->add('gender', 'choice', array(
     'choices' => array(
      'male' => 'Male', 
      'female' => 'Female' 
     ), 
     'multiple' => false, 
     'expanded' => true, 
     'required' => true, 
    )) 
    ->getForm(); 

現在,不幸的是,默認情況下沒有單選按鈕被選中!

任何人都可以幫忙嗎? 請問?

+1

我使用例如男性「數據」 =>「1 ',正上方'選擇'。這是你想要的嗎?或者詢問id並將其設置爲'data'= $ id。 – craphunter 2013-03-13 14:47:30

+1

在「選擇」之前,你是否錯過了開場白? – Mike 2015-07-07 19:03:16

回答

1

我認爲你需要堅持(和/或沖洗?)創建表單之前你的實體,因此實體有一個ID等 (這是預先選擇者均基於單選按鈕,一個可怕的方式)

0

我認爲單選按鈕的值爲'male'將會被選中,因爲你的實體已經有'男'作爲性別。這是symfony2框架的預期行爲。

如果您不希望單選按鈕沒有被默認選中,只需在將實體傳遞給表單構建器之前將其設置爲實體。

$user = new User(); 
$user->setGender('male'); //<- remove this line 

$form = $this->createFormBuilder($user) 
    ->add('gender', 'choice', array(
     'choices' => array(
      'male' => 'Male', 
      'female' => 'Female' 
     ), 
     'multiple' => false, 
     'expanded' => true, 
     'required' => true, 
    )) 
    ->getForm(); 
1

,如果你想在形式上與預選按鈕請儘量使用「數據」屬性與所需的鍵從選擇陣列,如:

->add('gender', 'choice', array(
     'choices' => array(
      'male' => 'Male', 
      'female' => 'Female' 
     ), 
     'multiple' => false, 
     'expanded' => true, 
     'required' => true, 
     'data'  => 'male' 
    ))