【Symfony】Formでsubmitされたあとの値を拾って書き換える
Formイベントをハンドリングして値を書き換えることができる。
イベントは何種類かあるのだけど、FormEvents::PRE_SUBMIT
か FormEvents::SUBMIT
かで値を書き換えようとして、FormEvents::SUBMIT
は値書き換えできないんだった、的なことに気づくことがあるので、ついでに書いておく。
<?php // ... class MyType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('name', TextType::class, [ 'label' => '名前' ]) ->addEventListener(FormEvents::PRE_SUBMIT, [$this, 'onPreSubmit']) ->addEventListener(FormEvents::SUBMIT, [$this, 'onSubmit']) ; } // ... public function onPreSubmit(FormEvent $event) { // OK: ここではPOST値を変えることができる $data = $event->getData(); $data['name'] = '田中太郎'; $event->setData($data); } public function onSubmit(FormEvent $event) { // NG: ここではPOST値を変えることができない $data = $event->getData(); $data['name'] = '田中太郎'; $event->setData($data); } }