symfony 4 ChoiceType выбранное значение для отправки в другую форму - PullRequest
0 голосов
/ 06 мая 2018

Я начинаю с symfony, и я просто пытаюсь использовать ChoiceType для определения множественного выбора на моей странице, но не уверен в том, как я могу извлечь выбранные элементы, мне нужны их идентификаторы, потому что позже я сделаю один выбор в базе данных с их.

Это мой код:

Контроллер № 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?
}

Контроллер №2: я могу получить «результаты» этих значений, используя запрос-> получить

/**
* @Route("/results", name="results")  
*/
public function index(Request $request)
{
    $name = $request->get('name');
    $selected_areas = ????

Спасибо за любую помощь в этом,

Ответы [ 2 ]

0 голосов
/ 07 мая 2018

Для этого лучше использовать EntityType, вы можете проверить его здесь https://symfony.com/doc/current/reference/forms/types/entity.html. Затем следующий код вернет вам выбранные объекты.

$areas = $form->get('areas')->getData();
0 голосов
/ 06 мая 2018

Попробуйте это:

$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             
          ));
}

Затем в шаблоне ветки вы можете получить к ним доступ:

{{ name }}
{{ areas }}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...