在Symfony2中使用选择字段类型时将选项标记为已选择

时间:2012-07-19 21:51:27

标签: php symfony

所以,我正在构建一个可供选择的小表单。但是,我想预先选择其中一些选项,就像我应用selected =“selected”一样。找不到文档中的内容。救命? :d

2 个答案:

答案 0 :(得分:1)

要为表单设置默认值,需要在表单的基础数据类中设置这些值。假设基础数据类是实体,则可以在构造中的该实体中默认值。如果您不使用实体注释并且不想更改生成的实体类,则可以将默认值设置为实体类的新实例,并将其用作表单的数据。

例如,对于具有角色数组和方法setRoles(array $ roles)的User实体,可以在User实体的构造函数中默认角色,这样(为清晰起见,使用了硬编码字符串):

public function __construct()
{
    $this->setRoles(array('ROLE_USER', 'ROLE_READER', 'ROLE_EDITOR');
}

或者,在表单显示之前,可以在控制器中默认角色(没有表单类和硬编码字符串的简单示例):

$allRoles = array('ROLE_USER', 'ROLE_READER', 'ROLE_EDITOR', 'ROLE_ADMIN', 'ROLE_SUPER_ADMIN');

$user = new User();
$user->setRoles(array('ROLE_USER', 'ROLE_READER', 'ROLE_EDITOR');

$form = $this->createFormBuilder($user)
    ->add('username', 'text')
    ->add('roles', 'choice',  array('choices' => array_combine($allRoles, $allRoles),
                                    'multiple' => true)
    ->getForm();

return $this->render('AcmeTaskBundle:Default:new.html.twig', array(
    'form' => $form->createView(),
));

答案 1 :(得分:0)

结束比我想象的更简单:

$form['form[selectionMenu]']->select(1);