我在我的FormType类中使用 submit 表单类型(我希望它可以针对css类和按钮标签进行自定义)。
由于它是搜索,我决定使用GET,而不是默认POST。我在Symfony2中注意到的是:
我尝试删除自动生成的HTML" name" attr来自控制器中的"按钮/提交" HTML标记,表单类型类,甚至是Twig模板,例如通过重写" name" - Symfony2似乎没什么用,名字="提交"始终生成此按钮。
有没有办法从提交按钮中删除这个HTML attr,或者我被迫只自己呈现整个提交按钮,并从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) }}
对于表单类型,我使用标准提交:
$builder->add('submit', 'submit', array('label' => 'search', attr(name => null) ....)
如您所见,此处名称attr已明确设置为null。 Symfony2以任何方式生成它,并给它一个&#34;提交&#34;对此名称的重视&#39; ATTR。
唯一的问题是:我能以某种方式使Symfony2不生成&#34; name&#34; HTML按钮/提交标签中的attr?如果Symfony2无法做到这一点,似乎唯一的方法就是简单地删除&#34; submity&#34;从表单类型类,并自己将此按钮的HTML直接放在模板中,我试图不这样做(但如果不可能,我将不得不这样做。)
对我而言,似乎Symfony2存在问题。提交类型在表格中是一个很新的东西,我可以想象自动生成的&#34; name&#34; attr遵循与Symfony2中其他表单类型相同的规则 - 尽管在HTML表单中确实不需要它!
解决方案:因此,我最终自己渲染了所有内容,并将其从“表单类型”中删除。我仍然认为 Symfony2 不应该生成名称&#39;对于这个特殊的标签 - 我从来没有见过&#34; name&#34; attr被分配到网上任何形式的SUBMIT按钮HTML标签,显然不需要也不需要。
答案 0 :(得分:1)
我认为有三种解决方案:
使用没有提交按钮的表单并在表单外部创建按钮。然后使用JS提交表单。
覆盖负责生成提交按钮的HTML内容的默认树枝模板。
自己生成HTML内容,而不是在那里使用名称。