Symfony2:无法使用多个复选框为此表单编写测试

时间:2015-05-05 20:11:53

标签: symfony

我有一个像这样的复选框表单元素:

            ...
            ->add(
                'race',
                'choice',
                array(
                    'label' => 'Racial Identity',
                    'choices' => array(
                        'American Indian or Alaskan Native' => 'American Indian or Alaskan Native',
                        'Asian' => 'Asian',
                        'Black or African American' => 'Black or African American',
                        'Native Hawaiian or Other Pacific Islander' => 'Native Hawaiian or Other Pacific Islander',
                        'White' => 'White',
                    ),
                    'multiple' => true,
                    'expanded' => true,
                )
            )
            ...

我正在编写一个测试来提交此表单并检查了几个选项:

    ...
    $form = $crawler->selectButton('Submit Application')->form(array(
        'application' => array(
            ...
            'race' => array(
                'Asian',
                'White',
            ),
            ...
        )
    ));
    $crawler = $client->submit($form);

提交表单时,出现此错误:

InvalidArgumentException: Input "application[race][]" cannot take "Asian" as a value (possible values: American Indian or Alaskan Native).

根据docs on the DOM Crawler,我正确地将数据传递给多维表格。

以下是复选框的HTML外观:

<input type="checkbox" id="application_race_0" name="application[race][]" value="American Indian or Alaskan Native">
<input type="checkbox" id="application_race_1" name="application[race][]" value="Asian">
<input type="checkbox" id="application_race_2" name="application[race][]" value="Black or African American">
<input type="checkbox" id="application_race_3" name="application[race][]" value="Native Hawaiian or Other Pacific Islander">
<input type="checkbox" id="application_race_4" name="application[race][]" value="White">

为什么这不起作用?它似乎认为只有第一个复选框有效。

1 个答案:

答案 0 :(得分:0)

结果我需要在值数组中使用正确的数字索引,这些数字索引与复选框的显示顺序相对应。

这有效:

            ...
            'race' => array(
                1 => true,
                2 => false,
            ),
            ...

或者我可以这样做:

            $form['application[race]'][1]->tick();
            $form['application[race]'][2]->tick();

在今天早上进行了一些谷歌搜索后,我发现了这篇帮助我的帖子:

Symfony2 functional test to select checkboxes