Php Symfony2表单获取提交字段类型-删除';名称';param

Php Symfony2表单获取提交字段类型-删除';名称';param,php,forms,symfony,get,Php,Forms,Symfony,Get,我在FormType类中使用submit表单类型(我想为css类和按钮标签定制它) 由于这是一个搜索,我决定使用GET,而不是默认的POST。我在Symfony2中注意到的是: 提交字段获取一个“name”参数 提交表单时,url中的一个参数是空的“提交”(即:) 我试图从controller中的“button/submit”HTML标记、表单类型类中,甚至在Twig模板中删除自动生成的HTML“name”attr,例如,通过覆盖“name”,Symfony2似乎不起作用,并且始终生成此按钮

我在FormType类中使用submit表单类型(我想为css类和按钮标签定制它)

由于这是一个搜索,我决定使用GET,而不是默认的POST。我在Symfony2中注意到的是:

  • 提交字段获取一个“name”参数
  • 提交表单时,url中的一个参数是空的“提交”(即:)
我试图从controller中的“button/submit”HTML标记、表单类型类中,甚至在Twig模板中删除自动生成的HTML“name”attr,例如,通过覆盖“name”,Symfony2似乎不起作用,并且始终生成此按钮的name=“submit”

有没有办法从submit按钮中删除这个HTML属性,或者我被迫自己只渲染整个submit按钮,然后从Form Type类中删除它

搜索表单的模板非常基本,Symfony2没有什么特别之处:

    {{ form_start(form) }}
        <div>
            {{ form_widget(form.target) }}
        </div>
        <div>
            {{ form_widget(form.phrase) }}
            {{ form_widget(form.submit) }}
        </div>
        {{ form_errors(form) }}
    {{ form_end(form) }}
如您所见,这里name attr被显式设置为null。Symfony2以任何方式生成它,并将其“提交”值赋给此“名称”属性

唯一的问题是:我能让Symfony2不在HTML按钮/提交标签中生成“name”attr吗?如果Symfony2不能做到这一点,似乎唯一的方法就是简单地从表单类型类中删除“submity”,然后自己将该按钮的HTML直接放在模板中,而我正试图不这么做(但如果不可能,我将不得不这样做)

对我来说,这似乎是Symfony2的一个问题。提交类型在这里的表单中是非常新的东西,我可以想象自动生成的“name”attr与Symfony2中的其他表单类型遵循相同的规则-尽管HTML表单中确实不需要它


解决方案:因此,我最终自己绘制了它,并将其从表单类型中删除。但我认为Symfony2不应该为这个特定的标记生成“name”——我从未见过“name”attr被指定在web上以任何形式提交按钮HTML标记,这显然是不需要的,也是不可取的。

我认为有三种解决方案:

  • 拥有一个没有提交按钮的表单,并在表单外部创建按钮。然后使用JS提交表单

  • 覆盖负责生成提交按钮的HTML内容的默认细枝模板

  • 自己生成HTML内容,不要在那里使用名称


  • 你应该发布一些代码,比如表单和模板OK,我写了一些代码,虽然它只是一个标准的Symfony2表单。主要的一点是“提交”表单类型,它在自动生成时似乎在Symfony2中放了“name”attr,在HTML表单中确实不需要它。嗯,我认为你是不对的。正如我提到的,我可以从中删除“name”attr“button/submit”HTML标记(或将其设为空)-然后它不会作为GET参数传递到URL。我在我的Symfony2应用程序中检查了这一点。抱歉,误解。我将编辑响应。
    $builder->add('submit', 'submit', array('label' => 'search', attr(name => null) ....)