问题描述
目标是提交一个带有两个单选按钮 (tipo) 和一个文本字段 (numero) 的 POST 表单,以便在我的数据库中进行查询并向用户显示数据.
我正在尝试提交下面的表单,但是当我提交表单时,遇到的请求是获取请求".表单在SupuestoConfig.html.twig"中:
<form id="configurador" action="{{ path('configsup') }}" method="POST"><p class="titulo_configurador">Elija supuesto penal:</p>{{ form_row(form.tipo) }}{{ form_row(form.numero, { 'label' : ' ', 'attr' : { 'class' : 'rec3' }}) }}{{ form_rest(form) }}<input type="submit" name="cargar" value="Cargar" class="inputbt"/></表单>
我在principal.html.twig"中渲染了之前的表单:
{{ render(controller('PprsBundle:Default:SupuestoConfig'), {'strategy': 'inline'}) }}
我的Controller.php":
/*** @Route("/pprs/principal/supuesto={numero_supuesto}", name="configsup")* @Template("PprsBundle:Default:SupuestoConfig.html.twig")*/公共函数 SupuestoConfigAction($numero_supuesto = null){$form = $this->createFormBuilder(null)->add('tipo', '选择', 数组('选择' =>大批('aleatorio' =>'Aleatorio','色情' =>'Por número'),'多个' =>错误的,'扩展' =>真的,'数据' =>'aleatorio'))//此添加可能包含错误->add('numero', 'text', array('label' => ' ','disabled' => true))->getForm();$peticion = $this->getRequest();echo ('<script type="text/javascript">alert("'.$peticion->getMethod().'");</script>');//返回'GET'if ($peticion->isMethod('POST')) {//Symfony2.2$form->bind($peticion);**$datos = $form->getData();***//foreach(array_keys($datos) as $p) {//echo ('<script type="text/javascript">alert ("'.$datos.'");</script>');//}*if ($form->isValid()) { ... }
在 Controller.php 中,尽管我有一个 GET 请求(当我删除该行时->add('numero', 'text',..
我有一个 POST 请求,这是为什么?),在 getData 中我没有得到文本字段.
最后,我的routing.yml:
pprs_principal:模式:/pprs/principal/supuesto={numero_supuesto}/默认值:{_controller:PprsBundle:默认值:principal,numero_supuesto:1}_pprs_principal:模式:/pprs/校长/默认值:{ _controller:FrameworkBundle:重定向:重定向,路由:pprs_principal }
抱歉我的英语不好,提前致谢
1) 当我在 createFormBuilder 中添加文本字段时,有人知道为什么我获得的是 GET 请求而不是 POST 吗?
2) 有谁知道为什么我在调用 getData 时没有得到文本字段?
请帮帮我...
也许这个答案可以帮到你:
基本上,当渲染带有 {% render %} 标签的表单时,它实际上创建了另一个"请求......它不会传入语言环境、方法等.
我打开了一个关于此的错误,它按照设计进行:
https://github.com/symfony/symfony/issues/7551
The goal is to submit a POST form with two radiobuttons (tipo) and a text field (numero) to make a query in my DB and show the data to the user.
I am trying to submit the form below, however when I submit the form, the request coming accross is a 'GET REQUEST'. The form is in "SupuestoConfig.html.twig":
<div id="cuadro">
<form id="configurador" action="{{ path('configsup') }}" method="POST">
<p class="titulo_configurador">Elija supuesto penal:</p>
{{ form_row(form.tipo) }}
{{ form_row(form.numero, { 'label' : ' ', 'attr' : { 'class' : 'rec3' }}) }}
{{ form_rest(form) }}
<input type="submit" name="cargar" value="Cargar" class="inputbt"/>
</form>
</div>
I render the previous form in "principal.html.twig":
{{ render(controller('PprsBundle:Default:SupuestoConfig'), {'strategy': 'inline'}) }}
My "Controller.php":
/**
* @Route("/pprs/principal/supuesto={numero_supuesto}", name="configsup")
* @Template("PprsBundle:Default:SupuestoConfig.html.twig")
*/
public function SupuestoConfigAction($numero_supuesto = null)
{
$form = $this->createFormBuilder(null)
->add('tipo', 'choice', array(
'choices' => array(
'aleatorio' => 'Aleatorio',
'pornumero' => 'Por número'),
'multiple' => false,
'expanded' => true,
'data' => 'aleatorio'
))
// This add may contains error
->add('numero', 'text', array('label' => ' ','disabled' => true))
->getForm();
$peticion = $this->getRequest();
echo ('<script type="text/javascript">alert ("'.$peticion->getMethod().'");</script>');// Returns 'GET'
if ($peticion->isMethod('POST')) {
// Symfony2.2
$form->bind($peticion);
**$datos = $form->getData();**
*//foreach(array_keys($datos) as $p) {
//echo ('<script type="text/javascript">alert ("'.$datos.'");</script>');
//}*
if ($form->isValid()) { ... }
In Controller.php, despite I´ve got a GET request (when I remove the line->add('numero', 'text',..
I´ve got a POST request, why is that?), in getData I don´t get the text field.
Finally, my routing.yml:
pprs_principal:
pattern: /pprs/principal/supuesto={numero_supuesto}/
defaults: { _controller: PprsBundle:Default:principal, numero_supuesto: 1 }
_pprs_principal:
pattern: /pprs/principal/
defaults: { _controller: FrameworkBundle:Redirect:redirect, route: pprs_principal }
Sorry for my bad english, Thanks in advance
Edit:
1) Anybody knows why I obtain a GET request instead of a POST when I add the text field in my createFormBuilder?
2) Anybody knows why Don't I get the text field when I call getData?
Help me please...
Maybe this answer could help you out:
getRequest() returns "GET" when posting form
Basically, when rendering a form with a {% render %} tag, it actually creates "another" request... It doesn't pass in the locale, the method, etc.
I opened a bug about this, and it went as By Design:
https://github.com/symfony/symfony/issues/7551
这篇关于为什么 getMethod() 返回“GET"?而不是“POST"?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!