首先,说我猜这个问题已经解决了,但是我的英语不允许我找到答案。
我对 Sonata 有一个“问题”,当我必须将某些东西与很多结果相关联时(例如:将现有产品分配给发票) Sonata 会生成一个非常大的下拉列表。有没有办法过滤这个列表?
谢谢!
首先,说我猜这个问题已经解决了,但是我的英语不允许我找到答案。
我对 Sonata 有一个“问题”,当我必须将某些东西与很多结果相关联时(例如:将现有产品分配给发票) Sonata 会生成一个非常大的下拉列表。有没有办法过滤这个列表?
谢谢!
您应该使用奏鸣曲提供的表单类型。
如果您想要可以通过输入选择输入来过滤的所有发票的列表,请使用sonata_type_model
如果您有很多发票并且不想全部加载它们,请使用sonata_type_model_autocomplete
https://sonata-project.org/bundles/admin/master/doc/reference/form_types.html
如果您的sonata_type_model
输入不允许您过滤,您应该验证您的奏鸣曲管理员版本是否使用 select2 并且已正确配置为使用它
#config.yml
sonata_admin:
options:
use_select2: true
虽然这是一个老问题,但我在谷歌搜索这个主题时来到这里。所以,我的解决方案是:
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')
;
}
])
;
}
您可以有多种选择:
$formMapper->add('invoice', 'sonata_type_model_list');
它将为您提供一个不错的小部件,用于选择要关联的发票。genemu_jqueryselect2_entity
类型并class
为您的实体设置属性。