Php 合并键=>;将值转换为symfony中的值
这主要是出于好奇,但我希望能够做到这一点 基本上,我希望使用Symfony的FormBuilder将Php 合并键=>;将值转换为symfony中的值,php,symfony,Php,Symfony,这主要是出于好奇,但我希望能够做到这一点 基本上,我希望使用Symfony的FormBuilder将自动对焦输入表单。可以通过使用类似这样的东西来输入 ->add('textField', null, array('attr' => array('class' => 'text-field-ex', 'autofocus' => true))) 但是,这最终会在结果表单中生成autofocus=“1”。这对Chrome来说很好,但Firefox不
自动对焦
输入表单。可以通过使用类似这样的东西来输入
->add('textField', null,
array('attr' => array('class' => 'text-field-ex', 'autofocus' => true)))
但是,这最终会在结果表单中生成autofocus=“1”
。这对Chrome来说很好,但Firefox不喜欢这种格式;它更喜欢独自生活,而不是作为一种属性;因此它不起作用。这在原始php代码中很容易做到,但出于某种原因,Symfony不想这样做
我知道这已经(某种程度上)得到了解决,正如评论中所建议的,这可以用Javascript相对容易地处理,这在我看来似乎是一个不完美的解决方案,因为它固有的不稳定性。我让它以这种方式工作,但我宁愿让代码本身在第一次正确呈现
我试过这样的方法:
$autofocus = 'autofocus';
->add('textField', null,
array('attr' => array('class' => 'text-field-ex', $autofocus)))
但这只是将结果表单字段变成“0”=autofocus
,仍然不起作用
有没有人对如何在Symfony中直接处理这个问题有任何想法 您只需覆盖模板中的
block_小部件
(请参阅),并将其输出属性的方式替换为以下内容:
{% for attrname, attrvalue in attr %}
{% if attrname == 'autofocus' %}
autofocus
{% else %}
{{ attrname }}="{{ attrvalue }}"
{% endif %}
{% endfor %}
我想它比javascript解决方案更简洁。您是否尝试过autofocus=“autofocus”是的。同样的问题。除非您希望修改底层Symphony代码,否则这似乎是被询问和回答的,您只是对答案不满意。@PatrickQ这是正确的。然而,正如我提到的;我发现答案是不充分的,因为这种功能应该是可能的。使用原始php非常简单。我可能对修改底层代码感兴趣;这似乎是一个有用的功能。如果你对这条道路有任何建议,我将不胜感激。这是一个很好的方法,但遗憾的是它没有奏效;它返回了
autofocus=”“
。我尝试使用replace
,但这似乎只适用于键或值;据我所知,我找不到任何改变操作符的方法。你直接通过Twig输出HTML,所以它工作(我刚刚尝试过,它工作得很好)-所以要么你的覆盖没有被考虑,要么你在代码中做其他事情……我理解Twig的工作原理。在Firefox中试试。它在Chrome上运行良好,但Firefox需要自动对焦才能独立运行。