TwigでJSONデコードしたい
Extending Twig - Documentation - Twig - The flexible, fast, and secure PHP template engine
Twigを拡張して json_decode
というフィルターを作ってあげる。
<?php // ... class MyExtension extends \Twig_Extension { // ... public function getFilters() { return [ new \Twig_Filter('json_decode', [$this, 'jsonDecodeFilter']), ]; } public function jsonDecodeFilter($json = null) { if (!$json) { return null; } return json_decode($json, true); } // ... }
こんな形で使用する。
{{ jsonString | json_decode }}
参考。
【Twig】対象の文字列が特定の文字列を含んでいるかどうかを判定する
【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); } }