Symfony две формы для одной и той же сущности на одной странице - PullRequest
0 голосов
/ 17 октября 2018

Я дважды использую функцию createFormBuilder на одной и той же странице, которая работает с одним и тем же объектом.Моя проблема в том, что Symfony обнаружил только первую сгенерированную форму, поэтому я не могу использовать метод $form->isSubmitted() && $form->isValid() для второй формы при отправке форм.

Я предполагаю, что это потому, чтоскрытые токены, соответствующие полю CSRF, идентичны для двух форм.

Есть ли способ сгенерировать другой токен для второй формы без его деактивации?

Две сгенерированные формы в моемview

<form name="form" method="post" class="form-delete-confirm">
    <input type="hidden" name="_method" value="DELETE" />
    <input type="hidden" id="form__token" name="form[_token]" value="h0i7WF2uQxi376ZF4kMm4TbuD0cE8TYPhWP9b-oNqJ4" />
</form>

<form name="form" method="post" class="form-post-confirm">
    <input type="hidden" id="form__token" name="form[_token]" value="h0i7WF2uQxi376ZF4kMm4TbuD0cE8TYPhWP9b-oNqJ4" />
</form>

У меня есть два метода, которые генерируют каждую форму, например

public function createParticipantPostForm($meetingId = null, $userId = null)
    {
        $form = $this->createFormBuilder(null, ['attr' => ['class' => 'form-post-confirm']]);
        // The action is null when one form is created form the modal, it is then defined thanks to the user click
        if (null !== $meetingId && null !== $userId) {
            $form = $form->setAction(
                $this->generateUrl(
                    'meeting_participant_create', [
                        'meeting_id' => $meetingId,
                        'user_id' => $userId,
                    ]
                )
            );
        }

        return $form->setMethod('POST')->getForm();
    }

Другой точно такой же, за исключением setMethod('DELETE'), атрибута класса и маршрута в методе generateUrl

Два метода выполняются в моем контроллере, и представления формы отправляются в представление.

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