我有一个像这样的复选框表单元素:
...
->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">
为什么这不起作用?它似乎认为只有第一个复选框有效。
答案 0 :(得分:0)
结果我需要在值数组中使用正确的数字索引,这些数字索引与复选框的显示顺序相对应。
这有效:
...
'race' => array(
1 => true,
2 => false,
),
...
或者我可以这样做:
$form['application[race]'][1]->tick();
$form['application[race]'][2]->tick();
在今天早上进行了一些谷歌搜索后,我发现了这篇帮助我的帖子: