gpt4 book ai didi

symfony - 带有 Put 方法的 symfony 表单中的表单 isSubscribed False

转载 作者:行者123 更新时间:2023-12-03 09:09:33 24 4
gpt4 key购买 nike

我使用form.factory创建一个表单并使用twig来渲染该表单。在这种情况下我必须使用 PUT 方法。我的代码是:

Controller :

$builder = $this->get('form.factory')->createNamedBuilder();
$form = $builder
->add('id', HiddenType::class, array('data' => $id))
->add('email', EmailType::class, array(
'required' => false,
'data' => count($res['result'][0]['email']) ? $res['result'][0]['email'] : '',
'attr' => array('class' => 'form-control label_form_symfony'),
'constraints' => array(
new Email(array('message' => 'il campo Email non è valido'))
)
))
->getForm();

$form->handleRequest($request);

if ($form->isSubmitted() && $request->isXmlHttpRequest()) {
$data = $form->getData();

if ($form->isValid()) {
// save ...
}
}

Twig 模板:

{{ form_start(form,{'method':'PUT','attr':{action: path('update_xxx',{'id' : id})}}) }}
{{ form_widget(form, {'attr' : {'class' : 'label_form_symfony' } } ) }}
<button type="submit" class="submit_form btn btn-default">Save</button>
<div id="feedback"></div>
{{ form_end(form) }}

当我提交表单时,我的 ‌‌$request->getMethod()PUT 但我的 ‌‌$form->isSubscribed()

在我的 HTML 中,我什至有隐藏字段:

<input type="hidden" name="_method" value="PUT">

更新我添加了在我的 Controller 中添加 $builder->setMethod('PUT') 并从我的 twig 中删除 'method':'PUT',当我提交表单时,我收到此错误 此表单不应包含额外字段。

最佳答案

此问题是因为默认情况下,handleRequest() 方法会检查表单方法(已为表单配置)是否等于请求方法。默认情况下,表单为 POST

只需使用setMethod函数即可。 $builder->setMethod('PUT') 或者您也可以在表单类型类的默认选项中设置它。

关于symfony - 带有 Put 方法的 symfony 表单中的表单 isSubscribed False,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43874769/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com