我知道网络上有很多关于此话题的论坛。 然而,非解决方案实际上对我有用,虽然这个问题看起来很简单。
我想预先选择我的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;
...
}
(Getters和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();
现在,遗憾的是,默认情况下没有选择单选按钮!
有人可以帮忙吗? 请?
答案 0 :(得分:1)
我认为您需要在创建表单之前保留(和/或刷新?)您的实体,因此该实体具有ID等。 (这是预先选择单选按钮的糟糕方式)
答案 1 :(得分:1)
如果你想预先选择表格中的按钮,请尝试使用'data'属性和所选数组中的所需键,例如:
->add('gender', 'choice', array(
'choices' => array(
'male' => 'Male',
'female' => 'Female'
),
'multiple' => false,
'expanded' => true,
'required' => true,
'data' => 'male'
))
答案 2 :(得分: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();
答案 3 :(得分:0)
对于那些仍在寻找解决方案的人。我只需设置$gender
变量的默认值即可解决此问题:
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 = "male";
...
}