2

我有一个用户注册表单(管理员使用),我想包括角色的选择。我已经成功地在我的 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',
                ),
            ),
    ));

现在,我希望这是一个多选或复选框列表,而不是下拉列表,但我似乎找不到方法,似乎是一件很简单的事情,或者我错过了有关此字段类型如何工作的一些信息,可以不是要多选吗?

4

3 回答 3

7

你不需要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',
        ),
    ))
;
于 2012-08-11T11:16:31.897 回答
0

目前,您正在使用collectionaschoice类型,这意味着您可以使用expandedmultiple选项来呈现您想要的四种元素类型中的任何一种。

于 2012-08-11T09:19:38.373 回答
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',
                ),
            ),
    ));
于 2012-08-11T09:26:05.123 回答