同一页面中同一实体的Symfony两种形式

时间:2018-10-17 12:00:06

标签: symfony

我在同一页面上两次使用了createFormBuilder函数,该函数可用于同一实体。我的问题是Symfony仅将第一个生成的表单检测为表单,因此提交表单时,我不能对第二个表单使用方法$form->isSubmitted() && $form->isValid()

我的猜测是,这是因为两种形式与CSRF字段相对应的隐藏令牌都是相同的。

是否可以在不停用第二种形式的情况下为第二种形式生成其他令牌?

在我看来这两个生成的表单

<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方法中的类属性和路由之外,其他完全相同

这两个方法在我的控制器中执行,并且表单视图发送到该视图。

0 个答案:

没有答案