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 回答