将key=>value合并为symfony中的value


merge key=>value into value in symfony

这主要是出于好奇,但我希望能够做到这一点。

基本上我有一个情况,我想输入一个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 %}