この場合、データ トランスフォーマーは使用しないでください。
データ トランスフォーマーの主なポイントは、データを相互に変換すること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
これで完了です。データは検証前にイベントでフィルター処理されます。
私は記憶からこの例を書き、それをテストしませんでした。多分あなたはそれを適応させるべきです(そして.の代わりにあなたのフィールドオプションを追加してください) [...]
。