symfony Twig上form_widget选项的占位符

ddrv8njm  于 2023-01-05  发布在  其他
关注(0)|答案(3)|浏览(143)

在控制器端使用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'} }) }}
smdnsysy

smdnsysy1#

不能,因为html5上的“选择框”没有属性“占位符”,表单生成器中的属性“占位符”是empty_value的替代属性
https://github.com/symfony/symfony/issues/5791

pzfprimi

pzfprimi2#

在createFormHandler上有empty_data选项,你可以使用占位符选项,但是在旧的浏览器中可能会遇到一些问题。
通常我会禁用HTML5功能,并使用Javascript来完成。
http://www.hagenburger.net/BLOG/HTML5-Input-Placeholder-Fix-With-jQuery.html
这里有一个很酷的jQuery插件来解决旧浏览器中的这个问题。
从你的控制器中设置值并没有什么实际意义。你可以在你的表单中设置一个键并翻译它们。
您只能在文本字段上添加属性。您在Selext-Box上的第二个方法不起作用,因为该元素上没有属性占位符。因此,您可以在FormType中使用占位符,但在后台将其更改为选项字段。

ds97pgxw

ds97pgxw3#

下面是我当前如何添加占位符的示例(我的选择列表可能与您的不同,但您可以使用此代码片段):

{% 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 %}

相关问题