1

目标是提交一个带有两个单选按钮 (tipo) 和一个文本字段 (numero) 的 POST 表单,以便在我的数据库中进行查询并向用户显示数据。

我正在尝试提交下面的表格,但是当我提交表格时,收到的请求是“GET REQUEST”。表格在“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 时我没有得到文本字段?

请帮帮我...

4

1 回答 1

1

也许这个答案可以帮助你:

getRequest() 在发布表单时返回“GET”

基本上,当使用 {% render %} 标签渲染表单时,它实际上会创建“另一个”请求......它不会传递语言环境、方法等。

我打开了一个关于这个的错误,它是按设计进行的:

https://github.com/symfony/symfony/issues/7551

于 2013-11-03T23:18:24.020 回答