我的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
中执行此操作答案 0 :(得分: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'));
}
}
答案 1 :(得分:1)
创建一个构造函数,该构造函数将数组作为SwitchPortfolioType
类的参数:
public function __construct($myArray)
{
$this->myArray = $myArray;
}
并且,在您的控制器中,在创建表单对象时将其传递给动态数组:
$form = $this->createForm(new SwitchPortfolioType($myArray), $entity);
现在,您可以使用$this->myArray
在表单类型中使用数组。
答案 2 :(得分:0)
请参阅本文档页面,您可以使用表单构建器区域中的FormEvents::PRE_SET_DATA
设置动态数据。