0

私はまだそのDateTime分野にいます、そして今私はそれらの2つの問題を抱えています。

1つのフォームに2つのフィールドがdate_startありdate_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,
    ) )

小枝フィールド

{% 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ありません)。

2番目の問題は、エラーメッセージに常に「この値は無効です」と表示され、その行@Assert\DateTime( message="My error message" )は効果がないように見えることです。dateそして、これを両方とtime別々に変更する方法がわかりませんでした。

どんな助けでも素晴らしいでしょう。

4

1 に答える 1

8

2番目の問題では、検証前に発生したデータ変換の失敗により、「この値は無効です」というエラーメッセージが設定されます。したがって@Assert、実際には無関係です。invalid_messageフォームフィールド宣言でオプションを設定することにより、メッセージを変更できます。

于 2012-07-16T19:35:40.490 に答える