mon*_*ser 2 symfony-forms symfony
我用来form.factory创建一个表单和树枝来渲染该表单。在这种情况下我必须使用PUT方法。我的代码是:
控制器:
\n\n$builder = $this->get(\'form.factory\')->createNamedBuilder();\n$form = $builder\n ->add(\'id\', HiddenType::class, array(\'data\' => $id))\n ->add(\'email\', EmailType::class, array(\n \'required\' => false,\n \'data\' => count($res[\'result\'][0][\'email\']) ? $res[\'result\'][0][\'email\'] : \'\',\n \'attr\' => array(\'class\' => \'form-control label_form_symfony\'),\n \'constraints\' => array(\n new Email(array(\'message\' => \'il campo Email non \xc3\xa8 valido\'))\n )\n ))\n ->getForm();\n\n$form->handleRequest($request);\n\nif ($form->isSubmitted() && $request->isXmlHttpRequest()) {\n $data = $form->getData();\n\n if ($form->isValid()) {\n // save ...\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n树枝模板:
\n\n{{ form_start(form,{\'method\':\'PUT\',\'attr\':{action: path(\'update_xxx\',{\'id\' : id})}}) }}\n {{ form_widget(form, {\'attr\' : {\'class\' : \'label_form_symfony\' } } ) }}\n <button type="submit" class="submit_form btn btn-default">Save</button>\n <div id="feedback"></div>\n{{ form_end(form) }}\nRun Code Online (Sandbox Code Playgroud)\n\n当我提交表格时,我\xe2\x80\x8c\xe2\x80\x8c$request->getMethod()是PUT,但我\xe2\x80\x8c\xe2\x80\x8c$form->isSubmitted()是false。
在我的 HTML 中,我什至有隐藏字段:
\n\n<input type="hidden" name="_method" value="PUT">\nRun Code Online (Sandbox Code Playgroud)\n\n更新$builder->setMethod(\'PUT\')\n我在我的控制器 \xc2\xa0 中添加了 \n\'method\':\'PUT\'并从我的树枝中删除,当我提交表单时,我收到此错误This form should not contain extra fields.
问题是因为默认情况下,handleRequest()方法会检查表单方法(已为表单配置)是否等于请求方法。默认情况下,它POST用于表单。
只需使用setMethod函数即可。$builder->setMethod('PUT')或者您也可以在表单类型类的默认选项中设置它。
| 归档时间: |
|
| 查看次数: |
5675 次 |
| 最近记录: |