我想在表单中显示复选框的动态列表。如何使用Symfony 2中的ChoiceListInterface?
到目前为止,我构建了一个嵌入静态复选框列表的表单,并且我为不同语言的不同值创建了一个Tag实体,并填充了数据库。我想用基于Tag实体的动态列表替换静态复选框。
documentation说我应该使用ChoiceListInterface。但它的记录确实很差。你会有一个例子或全球逻辑解释来帮助我吗?
我想在表单中显示复选框的动态列表。如何使用Symfony 2中的ChoiceListInterface?
到目前为止,我构建了一个嵌入静态复选框列表的表单,并且我为不同语言的不同值创建了一个Tag实体,并填充了数据库。我想用基于Tag实体的动态列表替换静态复选框。
documentation说我应该使用ChoiceListInterface。但它的记录确实很差。你会有一个例子或全球逻辑解释来帮助我吗?
您可以扩展LazyChoiceList抽象类并实现loadChoiceList()方法,创建它的服务,将它注入到窗体中并将其设置为choice_list
选项。
最后,我用了一个实体字段类型:
->add('tags', 'entity', array(
'class' => 'bndMyBundle:Tag',
'query_builder' => function(EntityRepository $er){
return $er->createQueryBuilder('t')
->orderBy('t.en', 'ASC');
},
'expanded' => true,
'multiple' => true,
'property' => 'en',
))
然后,我只需要通过用户的当前语言环境来替换成“en”值来选择合适的语言。
谢谢,但这看起来很难实施;我没有在Google上找到这样的例子:( – Yako
@Yako这很容易。像这样:http://stackoverflow.com/questions/13313415/symfony2-populate-choice-list-from-api-data :) – Tek