我有一个下拉列表(选择),我想选择默认选项:
这是生成选择的代码:
$builder->add('language', 'choice', array(
'label' => 'pages.age.gateway.language.label',
'choices' => array(1 => 'first option', 2 => 'second option'),
));
我已尝试过以下内容(此处建议Symfony2 Setting a default choice field selection):
$builder->add('language', 'choice', array(
'label' => 'pages.age.gateway.language.label',
'choices' => array(1 => 'first option', 2 => 'second option'),
'data' => '2'
));
这对我的代码不起作用(我对symfony2的理解,我可能没有朝着正确的方向发展)。
另一种选择是使用'preferred_choices',但我想避免这种情况,因为我不想修改选项的显示顺序。
答案 0 :(得分:1)
如果您的表单取决于实体:
/* Action */
public function myAction()
{
$user = new User();
$user->setLanguage(2); // Set the default option
$form = $this->createForm(new UserType(), $user); // Give the user to the form
if ($request->getMethod() == 'POST') {
$form->bindRequest($request);
if ($form->isValid()) {
$user = $form->getData();
// Do something like save / redirect
}
}
return array(
'form' => $form->createView(),
);
}
此外,您可以设置首选项(但不是真正的默认值),这要归功于preferred_choices键(它将值向上移动到选择的顶部):
$builder->add('language', 'choice', array(
'label' => 'pages.age.gateway.language.label',
'choices' => array(1 => 'first option', 2 => 'second option'),
'preferred_choices' => 2
));
答案 1 :(得分:-1)
您想要添加没有值的选项。您可以使用选项empty_value
执行此操作。
$builder
->add('gender', 'choice', array(
'label' => 'Gender',
'choices' => array('male', 'female'),
'empty_value' => 'Please select option'
));