1

index.twig に動的選択タグがあります。選択のコードは次のとおりです。

 <select name="portfolio" style="width: 265px; height:28px;">
   <option selected="selected" value="default">Switch Your Portfolio</option>
   {% for portfolio in portfolios %}
      <option value={{ portfolio.id }}>{{ portfolio.portfolioName }}</option>
   {% endfor %}
 </select>

今、SwitchPortfolioType があり、Type 内にこの動的選択を作成したい

class SwitchPortfolioType extends AbstractType
{
   public function buildForm(FormBuilder $builder, array $options)
   {
    $builder
    ->add('availability', 'choice', array(
        'choices'   => array(
            //dynamic options here
     ),
            'empty_value' => 'Switch your Portfolio',
    ));
   }
}

Symfony2でこれを行うにはどうすればよいですか

4

3 に答える 3

3

この方法でプロジェクトにコードを実装しました.....

class SwitchPortfolioType extends AbstractType
{
   public function buildForm(FormBuilder $builder, array $options)
   {

       $builder
            ->add('name')
            ->add('description')
            ->add('parentid', 'entity', array('class'=>'MusicCoreBundle:MusicCategory',
                'property'  => 'name',
                'required'  => false,
                'query_builder' => function(EntityRepository $er) {return $er->createQueryBuilder('s')->orderBy('s.name', 'ASC');},
                'empty_value' => 'No category'));

   }
}
于 2012-12-06T11:00:16.977 に答える
1

SwitchPortfolioTypeクラスの引数として配列を取るコンストラクターを作成します。

public function __construct($myArray)
{
    $this->myArray = $myArray;
}

そして、コントローラーで、フォーム オブジェクトを作成するときに動的配列を渡します。

$form = $this->createForm(new SwitchPortfolioType($myArray), $entity);

これで、フォーム タイプ内で配列を使用できるようになりました$this->myArray

于 2012-06-18T08:27:24.287 に答える
0

このドキュメントページを参照してくださいFormEvents::PRE_SET_DATA。フォームビルダー領域で使用して、動的データを設定できます。

http://symfony.com/doc/current/cookbook/form/dynamic_form_modification.html#how-to-dynamically-generate-forms-based-on-user-data

于 2014-03-22T18:56:27.053 に答える