Удалить поле формы Symfony после отправки - PullRequest
0 голосов
/ 19 ноября 2018

У меня есть форма, которую я хочу отредактировать, основываясь на ошибках, возникших во время ее проверки, но при попытке удалить поле я получаю исключение «AlreadySubmittedException».

Как удалить поле из моей формы после отправки?

$form = $this->createForm(MyForm::class);
$removeTheField=true;

if ($request->getMethod() == 'POST') {
    $form->handleRequest($request);

    if ($form->isValid()) {
        // Send form data to an API and get api errors
        // if api responds with some error
            $removeTheField = false;
        // endif
    }
}

if(removeTheField)) {
    $form->remove('my_field'); // throw AlreadySubmittedException
}

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

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

Это должно быть примерно так?Если форма отправлена, вы можете проверить ошибки и затем создать другую форму для визуализации.

if ($request->getMethod() == 'POST') {
    $form->handleRequest($request);

    if ($form->isValid()) {
        // check for errors
        if(removeTheField){
            $the_new_form = $this->createFormBuilder(null)-> ...
            // $the_new_form does not have 'my_field'
            return $this>render('your_twig.html.twig', array('form' => $the_new_form->createView()));
        }
    }
}

В 'your_twig.html.twig' вы можете проверить, содержит ли форма «my_field», чтобы избежать проблем.с веточкой.

0 голосов
/ 19 ноября 2018

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

https://symfony.com/doc/current/validation/custom_constraint.html

Если вам не нужно поле, вы должны удалить их или отключить проверку для этого поля.

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