symfonyでform名を変更
フォームを同一ページに複数配置する場合など、IDが重複してしまう問題が出てしまったので対処法を調べてみた。
フォームタイプクラスを作成
/** * フォームタイプを定義 */ class AddressType extends AbstractType { /** * @param FormBuilderInterface $builder * @param array $options */ public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('zip_code') ->add('address') ; } /** * @param OptionsResolverInterface $resolver */ public function setDefaultOptions(OptionsResolverInterface $resolver) { $resolver->setDefaults(array( 'data_class' => 'Achme\MasterBundle\Entity\Address' )); } /** * @return string */ public function getName() { return 'address'; } }
コンテナから form.factory の createNamedBuilder を呼び出して、そこから名前を変更したフォームを作成できる。
//Controller内で $type = new AddressType(); $form = $this->createForm($type, $address); $fb = $this->get("form.factory")->createNamedBuilder("my_address_form_name", $type); $fb->setData($address); $form = $fb->getForm();