目标是提交一个带有两个radiobuttons(tipo)和一个文本字段(numero)的POST表单,以便在我的数据库中进行查询并向用户显示数据。
我正在尝试提交下面的表单,但是当我提交表单时,提出的请求是“获取请求”。表格在“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>
我在“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")
*/
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()) { ... }
在Controller.php中,尽管我有一个GET请求(当我删除该行时)
->add('numero', 'text',..
我有一个POST请求,为什么会这样?),在getData中我没有得到文本字段。
最后,我的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 }
抱歉我的英文不好,提前致谢
编辑:
1)当我在createFormBuilder中添加文本字段时,有人知道为什么我获取GET请求而不是POST吗?
2)任何人都知道为什么我在调用getData时没有得到文本字段?
请帮帮我......
答案 0 :(得分:1)
也许这个答案可以帮助你:
getRequest() returns "GET" when posting form
基本上,当使用{%render%}标记呈现表单时,它实际上会创建“另一个”请求...它不会传递语言环境,方法等。
我打开了一个关于此问题的错误,它就像设计一样: