如何选择一年中的第二个月并在symfony doctrine form dateType中显示正确的日期(28或29)

时间:2016-09-25 15:34:23

标签: php forms doctrine symfony

如何在symfony doctrine form dateType中选择一年中的第二个月并根据闰年显示正确的日期28或29?

下面的图片是我使用表单主题进行自定义的表单。它显示得很好,但问题是当我选择第二个月它仍然让我选择大于29的那天。我可以在Symfony中验证它吗?或者有其他方法可以做到这一点?

enter image description here

以学说形式:

$builder
    ->add('startDate', DateType::class, [
        'format' => 'yyyy-MM-dd',
    ])
    ->add('endDate', DateType::class, [
        'format' => 'yyyy-MM-dd',
    ]);

以观看形式主题(树枝)

{% block date_widget %}
     {% spaceless %}
        {% if widget == 'single_text' %}
            {{- block('form_widget_simple') -}}
        {% else %}
            {% set attr = attr|merge({class: (attr.class|default('') ~ ' form-inline')|trim}) %}
            {% if datetime is not defined or not datetime %}
                <div {{ block('widget_container_attributes') }}>
            {%- endif %}
                {{ date_pattern|replace({
                    '{{ year }}':  form_widget(form.year, {'attr': {'id': 'year', 'name': 'year', 'class': 'form-control'}}),
                    '{{ month }}': form_widget(form.month, {'attr': {'id': 'month', 'name': 'month', 'class': 'form-control'}}),
                    '{{ day }}':   form_widget(form.day, {'attr': {'id': 'day', 'day': 'day', 'class': 'form-control'}}),
                })|raw }}
            {% if datetime is not defined or not datetime %}
                </div>
            {%- endif -%}
        {% endif %}
    {% endspaceless %}
{% endblock date_widget %}

在视图中

<div class="col-xs-12" style="margin-top:10px">
    <div class="form-inline">
        <div class="form-group">
             <label>Effective Time: </label>
        </div>
        <div class="form-group">
             {{ form_widget(form.startDate) }}
        </div>
        <div class="form-group">
            <label>  -  </label>
        </div>
        <div class="form-group">
            {{ form_widget(form.endDate) }}
        </div>
    </div>
</div>

1 个答案:

答案 0 :(得分:0)

您是否必须完全自己实施表单? 有客户端解决方案,如:http://amsul.ca/pickadate.js。只是谷歌“javascript datepicker”。

之后,您应该验证日期服务器端以及: 你可以使用php的checkdate函数:var_dump(checkdate(12,31,2000)); http://php.net/manual/en/function.checkdate.php