这主要是出于好奇,但我希望能够做到这一点。
基本上我有一个情况,我想输入一个autofocus
到使用Symfony的FormBuilder的表单。可以这样输入
->add('textField', null,
array('attr' => array('class' => 'text-field-ex', 'autofocus' => true)))
然而,结果,这最终产生了结果形式的autofocus="1"
。这在Chrome上运行良好,但Firefox不喜欢这种格式;它更喜欢autofocus
单独存在,而不是作为一个属性;因此它不起作用。这在原始php代码中很容易做到,但由于某些原因,Symfony不希望这样做。
我知道这已经(某种程度上)在这里解决了,正如在评论中建议的那样,这可以用Javascript相对容易地处理,这对我来说似乎是一个不完美的解决方案,由于固有的不稳定性。我让它以这种方式工作,但我宁愿让代码本身第一次正确渲染。
我试过这样做:
$autofocus = 'autofocus';
->add('textField', null,
array('attr' => array('class' => 'text-field-ex', $autofocus)))
但这只是将结果表单字段变为"0"=autofocus
,仍然不起作用。
有没有人对如何在Symfony中直接处理这个问题有任何想法?
您可以在模板中覆盖block_widget
(参见http://symfony.com/doc/current/form/form_customization.html),并将其输出属性的方式替换为以下内容:
{% for attrname, attrvalue in attr %}
{% if attrname == 'autofocus' %}
autofocus
{% else %}
{{ attrname }}="{{ attrvalue }}"
{% endif %}
{% endfor %}