1

クライアントはこれを要求しました。彼は、誕生日フィールドに複数の日付形式を許可したいと考えています。ドキュメントは、それを実現する方法の手がかりを私に与えてくれませんでした。

以前にそのような要求を経験し、これを達成する方法をリードしている人はいますか?

現在、次のようになっています。

$builder->add('xxx', 'birthday', array('widget' => 'single_text', 'invalid_message' => 'some message (dd-MM-yyyy)', 'format' => 'dd-MM-yyyy'))
4

2 に答える 2

1

フォームでさまざまな日付形式を処理する場合は、 DataTransformerを確認する必要があり ます。これは、データをある形式から別の形式に変換するのに役立ちます。次に例を示します。

2013-03-26 ==transform==> 2013/03/26
2013.03.26 ==transform==> 2013/03/26
26.03.2013 ==transform==> 2013/03/26
于 2013-03-26T17:02:42.067 に答える
1

この場合、データ トランスフォーマーは使用しないでください。

データ トランスフォーマーの主なポイントは、データを相互に変換することview <=> norm <=> modelです。

あなたの場合ではありません。双方向の変換は必要ありません。

必要なのは、データをフィルター処理することです。そのために、フォーム イベントを使用できます。

$builder->add(
    $builder
        ->create('xxx', 'birthday', [...])
        ->addEventListener(
            FormEvents::PRE_SUBMIT,
            function(FormEvent $event) {
                $value = $event->getData();
                // Do the filtering you want (for example replacement of special chars with a dash)
                // $value = preg_replace('[^\d]', '-', $value)
                $event->setData($value);
            }
        )
);

PRE_SUBMITこれで完了です。データは検証前にイベントでフィルター処理されます。

私は記憶からこの例を書き、それをテストしませんでした。多分あなたはそれを適応させるべきです(そして.の代わりにあなたのフィールドオプションを追加してください) [...]

于 2014-06-12T14:46:46.657 に答える