バージョン
Symfony 3.1.1
###前提・実現したいこと
フォームタイプをクラス化し、そこでチェックボックスを生成して出力しようと思います。
(例:src/OrderBundle/Form/PlacesType のような、AbstractTypeを継承しているクラスです。)
チェックボックスで使用する選択肢はDBから引っ張ってきた値をコントローラから渡して利用したいのですが、
PlacesTypeクラスに動的に選択肢の配列を渡す方法がわかりませんでした。
###該当のソースコード
例:何箇所かの場所を選択させるチェックボックスを出力するフォーム
Type
src/OrderBundle/Form/PlacesType.php
<?php namespace OrderBundle\Form; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\Extension\Core\Type\ChoiceType; use Symfony\Component\Form\Extension\Core\Type\SubmitType; use Symfony\Component\OptionsResolver\OptionsResolverInterface; class PlacesType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options) { //★この場所の情報はコントローラー側から動的に渡したい $places = array( '新宿オフィス' => 1, '渋谷オフィス' => 2, '四谷オフィス' => 3, ); $builder ->add('place', ChoiceType::class, array( 'choices' => $places, 'expanded' => true, 'multiple' => true, 'label' => '場所', ) ) ->add('submit', SubmitType::class, [ 'label' => '送信', ]) ->getForm(); } public function getName() { return 'place'; } }
Controller
src/OrderBundle/Controller/OrderController.php
・・・ use OrderBundle\Entity\Places; use OrderBundle\Form\PlacesType; ・・・ public function orderPlaceAction(Request $request) { $place = new Places(); $form = $this->createForm( PlacesType::class, $place); return $this->render('OrderBundle:Order:order-place.html.twig', array('form' => $form->createView(),) );
###試したこと
Controller内にてcreateFormBuider()を利用してフォームを生成する、in-placeなやり方は問題なく実装できました。
実際に表題のやり方ができるのか、できるとしたら具体的にどのように書けるのか、
参考にすべきURLや箇所など、ご教示頂けますと大変助かります。
(Symfony 2系でもなにかヒントになる物がありましたら、知りたいと考えています)
宜しくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。