无法更改DateTime字段的错误/消息并获得重复错误

时间:2012-07-16 17:48:47

标签: datetime symfony twig

我仍在DateTime字段上,现在我遇到了这两个问题。

我在一个表单date_startdate_end上有两个字段,其中两个字段的定义如下:

实体

/**
 * @ORM\Column(type="datetime", nullable=true)
 * @Assert\DateTime( message="My error message" )
 */
protected $date_start;

表格类型

->add('date_start', 'datetime', array(
        'label' => 'incoming',
        'date_widget' => 'single_text',
        'time_widget' => 'single_text',
        'date_format' => 'dd/MM/yyyy',
        'with_seconds' => false,
        'required' => false,
    ) )

Twig Fields

{% block form_errors %}
{% spaceless %}
    {% if errors|length > 0 %}
        {% for error in errors %}
            <li>{{ error.messageTemplate }}</li>
        {% endfor %}
    {% endif %}
{% endspaceless %}
{% endblock form_errors %}

{% block field_errors %}{{ block('form_errors') }}{% endblock %}

树枝模板

{{ form_errors(form.date_start.date) }}
{{ form_errors(form.date_end.date) }}

<div class="row{% if form_errors(form.date_start.date) or form_errors(form.date_start.time) %} error{% endif %}">
    {{ form_label(form.date_end, null, { 'attr': {'class': '_hint'} }) }}
    {{ form_widget(form.date_end) }}
</div>

date_end再次完全相同。

问题

当我为date_start.date 输入错误的输入时 <div>获取错误类,两者都附加了相同的错误。反之亦然(date_start.date无效,但date_end.date没有)。

第二个问题是错误消息始终显示“此值无效”,而行@Assert\DateTime( message="My error message" )似乎没有任何效果。我不知道如何分别为datetime更改此内容。

任何帮助都会很棒。

1 个答案:

答案 0 :(得分:8)

对于第二个问题,由于在验证之前发生数据转换失败,因此设置了错误消息“此值无效”。所以@Assert实际上是无关紧要的。您可以通过在表单字段声明中设置invalid_message选项来更改消息。