过滤Sonata Admin Bundle中编辑视图的下拉列表

时间:2013-07-08 11:01:53

标签: sonata-admin symfony-sonata

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

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

谢谢!

3 个答案:

答案 0 :(得分:1)

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

如果您想要通过在选择输入中键入来过滤所有发票的列表,请使用sonata_type_model

如果您有很多发票并且不想加载它们,请使用sonata_type_model_autocomplete

After CSS Styling

如果您的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');,它会为您提供一个很好的小部件,用于选择要关联的发票。
  • 您可以使用GenemuFormBundle来显示Select2库小部件。很容易集成。只需使用genemu_jqueryselect2_entity类型并将class属性设置为您的实体。