在控制器端使用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'} }) }}
答案 0 :(得分:3)
你不能因为"选择框"在html5上没有属性"占位符",您的属性"占位符"在你的formbuilder中可以选择 empty_value
答案 1 :(得分:1)
在createFormHandler上,它是empty_data选项。您可以使用placeholder选项,但可能会在较旧的浏览器中遇到麻烦。
通常我禁用HTML5功能并使用Javascript执行此操作。
http://www.hagenburger.net/BLOG/HTML5-Input-Placeholder-Fix-With-jQuery.html
这是一个很酷的jQuery插件,用于修复旧浏览器中的问题。
设置控制器的值并不是真的有意义。您可以在表单中设置密钥并进行翻译。
您只能在文本字段中添加属性。 Selext-Box上的第二种方法无效,因为该元素上没有属性占位符。因此,您可以在FormType中使用占位符,但在背景中将其更改为选项字段。
答案 2 :(得分:0)
以下是我当前添加占位符的示例(我的选择列表可能与您的不同,但您可以使用此代码段):
{% form_theme cart_form _self %}
{% block choice_widget %}
{% if form.vars.choices is defined %}
{% for choices in form.vars.choices %}
<div class="row">
<div class="col-md-6">
<select name="{{ form.vars.full_name }}" class="form-control">
<option value="__none">--Choose</option>
{% for choice in choices %}
<option value="{{ choice.value }}">{{ choice.label }}</option>
{% endfor %}
</select>
</div>
</div>
{% endfor %}
{% endif %}
{% endblock %}