如何在symfony2表单字段中启用多项选择:集合

时间:2012-08-11 09:09:42

标签: php forms symfony doctrine

我有一个用户注册表(管理员使用),我想包括角色的选择。我已经在buildForm函数中使用以下代码成功添加了一个角色下拉列表:

    $builder
        ->add('roles', 'collection', array(
            'type'   => 'choice',
            'options'  => array(
                'choices'  => array(
                    'ROLE_CONTENT' => 'Innehåll',
                    'ROLE_LAYOUT'     => 'Skärmlayout',
                    'ROLE_VIDEO'    => 'Videouppladdning',
                    'ROLE_ADMIN'    => 'Administratör',
                ),
            ),
    ));

现在,我希望这是一个多选项或复选框列表而不是下拉列表,但我似乎无法找到方法,看起来像一个简单的事情或我错过了一些关于这个字段类型的东西工作,不能多选择吗?

3 个答案:

答案 0 :(得分:6)

此处您不需要collection类型。 choice类型带"多个"设置为true将输出一个集合。

$builder
    ->add('roles', 'choice', array(
        'expanded' => true,
        'multiple' => true,
        'choices'  => array(
            'ROLE_CONTENT' => 'Innehåll',
            'ROLE_LAYOUT'  => 'Skärmlayout',
            'ROLE_VIDEO'   => 'Videouppladdning',
            'ROLE_ADMIN'   => 'Administratör',
        ),
    ))
;

答案 1 :(得分:0)

目前,您使用collection作为choice类型,这意味着您可以使用expanded and multiple options呈现所需的四种元素类型中的任何一种。

答案 2 :(得分:0)

扩展的工作正常,给我单选按钮,但我想要复选框。

这适用于无线电:

    $builder
        ->add('roles', 'collection', array(
            'type'   => 'choice',
            'options'  => array(
                'expanded' => true,
                'choices'  => array(
                    'ROLE_CONTENT' => 'Innehåll',
                    'ROLE_LAYOUT'     => 'Skärmlayout',
                    'ROLE_VIDEO'    => 'Videouppladdning',
                    'ROLE_ADMIN'    => 'Administratör',
                ),
            ),
    ));

如果我把它放入,它会抛出一个错误“预期的类型参数”数组“,”字符串“给定”:

    $builder
        ->add('roles', 'collection', array(
            'type'   => 'choice',
            'options'  => array(
                'expanded' => true,
                'multiple' => true,
                'choices'  => array(
                    'ROLE_CONTENT' => 'Innehåll',
                    'ROLE_LAYOUT'     => 'Skärmlayout',
                    'ROLE_VIDEO'    => 'Videouppladdning',
                    'ROLE_ADMIN'    => 'Administratör',
                ),
            ),
    ));