Symfony2默认选择单选按钮

问题描述:

我知道在这个主题的网络中的各种论坛上已经有不少文章。 然而,非解决方案实际上为我工作,虽然这个问题似乎很简单。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

我认为你需要坚持(和/或冲洗?)创建表单之前你的实体,因此实体有一个ID等 (这是预先选择者均基于单选按钮,一个可怕的方式)

我认为单选按钮的值为'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(); 

,如果你想在形式上与预选按钮请尽量使用“数据”属性与所需的键从选择阵列,如:

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