假设我有一个名为myform
的表单,其输入字段名为myinput
。默认情况下,symfony将生成HTML小部件,如:
<input name="myform[myinput]" ... >
这不适用于我目前的javascripts,我需要获得以下内容:
<input name="myinput" ...>
我已经搜索了很多,并找到了两种方法来实现这一目标:
getBlockPrefix()
方法中返回null。FormFactoryInterface::createNamed()
创建表单并将null
作为名称传递。似乎不建议使用第一种方法,因为它会限制使用前缀块自定义表单呈现的能力。
然而,两种方法都会将表单的名称更改为null,因此symfony将生成如下形式:
<form name="" ...>
这可能是因为form_div_layout.html.twig
看起来像:
<form name="{{ name }}" ...
哪个没有验证为HTML5。
根据this page,&#34;这不是错误&#34;。
我知道我可以覆盖模板中的form_start
块并完全删除名称,但似乎该表单一般不能与空名称一起使用(因此不会检查名称模板中的长度)。
所以我的问题是:删除symfony表单的输入名称前缀的推荐和HTML5兼容方法是什么?
答案 0 :(得分:0)
答案 1 :(得分:0)
这是表单呈现中的一个错误。我已经向symfony回购提交了pull request,但已被接受。
在发布更改之前,临时解决方案是将此代码添加到表单主题:
{# fix HTML5 validation of forms with null names #}
{% block form_start %}
{% set name = name|default(block_prefixes.1) %}
{{ parent() }}
{% endblock %}