在控制器端使用PHP,我可以使用createFormBuilder()在字段中添加占位符:
$form = $this->createFormBuilder($company)
->add('name', 'text')
->add('cities', 'entity', array(
'class' => 'NexBaseBundle:City',
'property' => 'name',
'placeholder' => 'Choose an option',
))
->getForm();
我希望使用Twig添加一个占位符,对于简单的字段,我可以使用attr,如下所示:
{{ form_widget(form.name, {'attr': {'placeholder': 'My placeholder'} }) }}
我试过了,但没有成功:
{{ form_widget(form.cities, {'attr': {'placeholder': 'Choose your city'} }) }}
3条答案
按热度按时间smdnsysy1#
不能,因为html5上的“选择框”没有属性“占位符”,表单生成器中的属性“占位符”是empty_value的替代属性
https://github.com/symfony/symfony/issues/5791
pzfprimi2#
在createFormHandler上有empty_data选项,你可以使用占位符选项,但是在旧的浏览器中可能会遇到一些问题。
通常我会禁用HTML5功能,并使用Javascript来完成。
http://www.hagenburger.net/BLOG/HTML5-Input-Placeholder-Fix-With-jQuery.html
这里有一个很酷的jQuery插件来解决旧浏览器中的这个问题。
从你的控制器中设置值并没有什么实际意义。你可以在你的表单中设置一个键并翻译它们。
您只能在文本字段上添加属性。您在Selext-Box上的第二个方法不起作用,因为该元素上没有属性占位符。因此,您可以在FormType中使用占位符,但在后台将其更改为选项字段。
ds97pgxw3#
下面是我当前如何添加占位符的示例(我的选择列表可能与您的不同,但您可以使用此代码片段):