首先,我想这个问题已经解决了,但我的英语不允许我找到答案。
我对Sonata有一个“问题”,当我必须将一些内容与很多结果联系起来时(例如:将现有产品分配给发票)Sonata会生成一个非常大的下拉列表。 有没有办法过滤此列表?
谢谢!
答案 0 :(得分:1)
您应该使用奏鸣曲提供的表单类型。
如果您想要通过在选择输入中键入来过滤所有发票的列表,请使用sonata_type_model
如果您有很多发票并且不想加载它们,请使用sonata_type_model_autocomplete
如果您的sonata_type_model
输入无法过滤,则应验证您的sonata管理员版本是否使用了select2并且已正确配置为使用它
#config.yml
sonata_admin:
options:
use_select2: true
答案 1 :(得分:0)
虽然这是一个古老的问题,但是当我在谷歌搜索这个主题时,我来到这里。所以,我的解决方案是:
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->add('city', null, [
'query_builder' => function(EntityRepository $repo) {
// Here you should create and return a DQL query
// that will filter data the way you want
return $repo
->createQueryBuilder('city')
->where('city.country_code = \'US\'')
->orderBy('city.name', 'ASC')
;
}
])
;
}
答案 2 :(得分:-1)
您可以有多种选择:
$formMapper->add('invoice', 'sonata_type_model_list');
,它会为您提供一个很好的小部件,用于选择要关联的发票。genemu_jqueryselect2_entity
类型并将class
属性设置为您的实体。