我从symfony开始,我只是尝试使用ChoiceType在我的页面中定义多项选择,但不确定如何检索所选项目,我需要他们的ID,因为稍后我将在数据库中选择一个它们。
这是我的代码:
Controllernº1:
$areas = $this->getDoctrine()->getRepository(Area::class)->findAll();
$form = $this->createFormBuilder()
->add('name', TextType::class)
->add('areas', ChoiceType::class,
array('label' => $translator->trans("areas_label") . ':',
'choices' => $areas,
'choice_label' => 'getAreaName',
'multiple'=>true)
)
->getForm();
$form->handleRequest($request);
if($form->isSubmitted() && $form->isValid()) {
$data = $form->getData();
return $this->redirectToRoute('results',
array('name' => $data['name'],
'selected_areas'=> ??? )); <--- any idea?
}
控制器nº2:我可以使用request-&gt; get
获取'结果'这些值/**
* @Route("/results", name="results")
*/
public function index(Request $request)
{
$name = $request->get('name');
$selected_areas = ????
感谢您提供任何帮助,
答案 0 :(得分:0)
试试这个:
$form->handleRequest($request);
if($form->isSubmitted() && $form->isValid()) {
$name = $form->get('name')->getData();
$areas = $form->get('areas')->getData();
return $this->redirectToRoute('results',
array('name' => $name, 'areas' => $areas
));
}
然后,在twig模板中,您可以通过以下方式访问它们:
{{ name }}
{{ areas }}
答案 1 :(得分:0)
最好使用EntityType,您可以在此处查看https://symfony.com/doc/current/reference/forms/types/entity.html。 然后下一个代码将返回您选择的实体。
$areas = $form->get('areas')->getData();