Php 如何在日期中的各个选择字段上设置属性?

Php 如何在日期中的各个选择字段上设置属性?,php,symfony,twig,Php,Symfony,Twig,我想通过twig为日期字段中的select字段设置属性。理想情况下,我会有一段代码,如下所示: {% setAttribute(myForm.myDate.day, {'attr': {'p-class': myForm.myDate.vars.id }}) %} {% setAttribute(myForm.myDate.month, {'attr': {'p-class': myForm.myDate.vars.id }}) %} {% setAttribute(myForm.myDate.

我想通过twig为日期字段中的select字段设置属性。理想情况下,我会有一段代码,如下所示:

{% setAttribute(myForm.myDate.day, {'attr': {'p-class': myForm.myDate.vars.id }}) %}
{% setAttribute(myForm.myDate.month, {'attr': {'p-class': myForm.myDate.vars.id }}) %}
{% setAttribute(myForm.myDate.year, {'attr': {'p-class': myForm.myDate.vars.id }}) %}
{{ form_row(myForm.myDate) }}

如何在twig/symfony2中执行此操作?

其中一种方法是单独输出每个字段:

{{ form_widget(myForm.myDate.day, {'attr': {'p-class': myForm.myDate.vars.id }}) }}
{{ form_widget(myForm.myDate.month, {'attr': {'p-class': myForm.myDate.vars.id }}) }}
{{ form_widget(myForm.myDate.year, {'attr': {'p-class': myForm.myDate.vars.id }}) }}

另一种方法是。

其中一种方法是单独输出每个字段:

{{ form_widget(myForm.myDate.day, {'attr': {'p-class': myForm.myDate.vars.id }}) }}
{{ form_widget(myForm.myDate.month, {'attr': {'p-class': myForm.myDate.vars.id }}) }}
{{ form_widget(myForm.myDate.year, {'attr': {'p-class': myForm.myDate.vars.id }}) }}

另一种方法是。

其他两种选择:

使用细枝将ID放到父div标记上

这意味着您需要调整所使用的JS/CSS

{{ form_row(myForm.myDate, { 'attr': {'class': myForm.myDate.vars.id} } )
使用CSS PSEDOO选择器:

您不太可能只想为输出设置样式(您正在填充ID),但您可以始终使用CSS选择器进行样式设置

<div class="some-selector">
    <select><option>YEAR</option></select>
    <select><option>MONTH</option></select>
    <select><option>DAY</option></select>
</div>

.some-selector select { color: green; }
.some-selector select + select { color: red; }
.some-selector select + second + select { color: blue; }

年
月
白天
.某些选择器选择{color:green;}
.一些选择器select+select{color:red;}
.一些选择器select+second+select{color:blue;}
这是一把小提琴:

表单主题化

正如Elnur所说,您也可以使用表单主题化: 默认主题可以在

因此,您可以在自己的主题中覆盖date_小部件,必要时添加id

{% block date_widget %}
{% spaceless %}
    {% if widget == 'single_text' %}
        {{ block('form_widget_simple') }}
    {% else %}
        <div {{ block('widget_container_attributes') }}>
            {{ date_pattern|replace({
                '{{ year }}':  form_widget(form.year),
                '{{ month }}': form_widget(form.month),
                '{{ day }}':   form_widget(form.day),
            })|raw }}
        </div>
    {% endif %}
{% endspaceless %}
{% endblock date_widget %}
{%block date\u widget%}
{%spaceless%}
{%if widget=='single_text%}
{{block('form_widget_simple')}
{%else%}
{{日期|模式|替换({
“{{year}}”:form_小部件(form.year),
“{{month}}”:form_小部件(form.month),
“{day}”:form_小部件(form.day),
})|原始}}
{%endif%}
{%endspaceless%}
{%endblock日期\小部件%}
JS


您可以在页面加载后使用JS提供该类,但我不会这样做。

还有几个其他选项:

使用细枝将ID放到父div标记上

这意味着您需要调整所使用的JS/CSS

{{ form_row(myForm.myDate, { 'attr': {'class': myForm.myDate.vars.id} } )
使用CSS PSEDOO选择器:

您不太可能只想为输出设置样式(您正在填充ID),但您可以始终使用CSS选择器进行样式设置

<div class="some-selector">
    <select><option>YEAR</option></select>
    <select><option>MONTH</option></select>
    <select><option>DAY</option></select>
</div>

.some-selector select { color: green; }
.some-selector select + select { color: red; }
.some-selector select + second + select { color: blue; }

年
月
白天
.某些选择器选择{color:green;}
.一些选择器select+select{color:red;}
.一些选择器select+second+select{color:blue;}
这是一把小提琴:

表单主题化

正如Elnur所说,您也可以使用表单主题化: 默认主题可以在

因此,您可以在自己的主题中覆盖date_小部件,必要时添加id

{% block date_widget %}
{% spaceless %}
    {% if widget == 'single_text' %}
        {{ block('form_widget_simple') }}
    {% else %}
        <div {{ block('widget_container_attributes') }}>
            {{ date_pattern|replace({
                '{{ year }}':  form_widget(form.year),
                '{{ month }}': form_widget(form.month),
                '{{ day }}':   form_widget(form.day),
            })|raw }}
        </div>
    {% endif %}
{% endspaceless %}
{% endblock date_widget %}
{%block date\u widget%}
{%spaceless%}
{%if widget=='single_text%}
{{block('form_widget_simple')}
{%else%}
{{日期|模式|替换({
“{{year}}”:form_小部件(form.year),
“{{month}}”:form_小部件(form.month),
“{day}”:form_小部件(form.day),
})|原始}}
{%endif%}
{%endspaceless%}
{%endblock日期\小部件%}
JS


加载页面后,您可以使用JS提供该类,但我不会。

我不能这样做。有很多样式我不想做,因为我们已经使用{{form_row()}}对表单进行了样式化。如果我们那样做的话,有太多的事情要改变。我不能那样做。有很多样式我不想做,因为我们已经使用{{form_row()}}对表单进行了样式化。如果我们这样做的话,会有太多的改变。