2

首先,说我猜这个问题已经解决了,但是我的英语不允许我找到答案。

我对 Sonata 有一个“问题”,当我必须将某些东西与很多结果相关联时(例如:将现有产品分配给发票) Sonata 会生成一个非常大的下拉列表。有没有办法过滤这个列表?

谢谢!

4

3 回答 3

1

您应该使用奏鸣曲提供的表单类型。

如果您想要可以通过输入选择输入来过滤的所有发票的列表,请使用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
于 2017-01-10T11:17:58.890 回答
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')
                ;
            }
        ])
    ;
}
于 2017-06-30T21:58:08.070 回答
-1

您可以有多种选择:

  • 您可以使用$formMapper->add('invoice', 'sonata_type_model_list');它将为您提供一个不错的小部件,用于选择要关联的发票。
  • 您可以使用GenemuFormBundle来显示Select2库小部件。非常容易集成。只需使用genemu_jqueryselect2_entity类型并class为您的实体设置属性。
于 2013-07-09T16:34:06.150 回答