我有一个带有ChoiceType
字段的表单,我需要对选定的数据执行某些操作,而对未选定的数据执行其他操作。
我认为我需要使用选定的数据来检索未选定的数据,但是有没有办法将它们直接发送到控制器?也许与empty_data
一起使用,但是我不确定如何使用它。
要弄清我是否在Vue中:
<select name="carlist" form="carform" multiple>
<option value="volvo" selected>Volvo</option>
<option value="saab" selected>Saab</option>
<option value="opel">Opel</option>
<option value="audi">Audi</option>
</select>
如何使用$form->getData()
检索“ audi”和“ opel”值? (当然可以)
答案 0 :(得分:0)
如果field是表单对象的一部分(在此示例中为$form
),则可以使用以下字段来检索字段carlist
的数据:
$carlist = $form->get('carlist');
或者,要从整个表单中获取数据,您可以使用:$data = $form->getData()
。
如果您的字段不属于表单对象,则可以使用:
$carlist = $request->request->get('carlist');
这是从Request object获取数据。
答案 1 :(得分:0)
您有一个这样的表格:
<select name="carlist" form="carform" multiple>
<option value="volvo" selected>Volvo</option>
<option value="saab" selected>Saab</option>
<option value="opel">Opel</option>
<option value="audi">Audi</option>
</select>
您的控制器:
$form = $this->createForm(YourForm::class, //...);
$choices = [
'Volvo' => 'volvo',
'Saab' => 'saab',
'Opel' => 'opel',
'Audi' => 'audi',
];
$form->add('carlist', ChoiceType::class, [
'multiple' => true,
'choices' => $choices
]);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$not_used_cars = [];
$car_list = $form->get('carlist')->getData();
foreach ($choices as $car) {
if ( false === array_search( $car, $car_list ) )
$not_used_cars[] = $car;
}
/*
* dump($not_used_cars);
* //Output:
* [
* 0 => 'opel'
* 1 => 'audi'
* ]
*/
}