Как получить значение поля формы в Symfony 4 при сбое проверки? - PullRequest
0 голосов
/ 15 января 2019

У меня есть два выпадающих списка в моей форме. Параметры во втором раскрывающемся списке зависят от выбранного значения в первом раскрывающемся списке. Если проверка не пройдена, мне нужно получить опубликованное значение первого раскрывающегося списка, чтобы задать параметры во втором раскрывающемся списке. Итак, как получить объявленное значение в классе типа формы, если проверка не пройдена?

Ответы [ 3 ]

0 голосов
/ 16 января 2019

$ реклама = новая реклама ();

    $form = $this->createForm(AdvertType::class, $advert, ['method' => 'POST'])
        ->handleRequest($request);

    if (false === $form->isSubmitted()) {
        $form->submit([]);
    }

    if (false === $form->isValid()) {
        return ['form' => $form];
    }

    $manager = $this->getDoctrine()->getManager();
    $this->appendTags($advert);
    $manager->persist($advert);
    $manager->flush();

    return $advert;
0 голосов
/ 16 января 2019

Мне нужно что-то вроде ниже, в моем классе типа формы, например. DocType в методе buildForm (), который я сделал:

$request = Request::createFromGlobals(); 
$myObjectId = $request->request->get('doc')['object']; // selected option of the first dropdown
$object = ($obectId) ? $objectRepository->find($objectId) : null;

Тогда я мог бы использовать выбранный объект, чтобы заполнить второй выпадающий список, используя построитель запросов.

0 голосов
/ 15 января 2019
$form = $this->createForm(MyFormType::class);

$form->handleRequest($request);

if ($form->isSubmitted() && $form->isValid()) {
    /**
     * Do your stuff when form is valid
     */
} else {
    /**
     * Here you can get the input data even failed with $form->getData()
     */
    dump($form->getData());
}

$form->getData() дает мне значения ввода, которые не удалось в остальном:

array:4 [▼
  "first_dropdown" => "hello"
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...