在 Sonata Admin 中过滤后高级过滤器消失

Advanced filters disappearing after filtering in Sonata Admin

我已经在我的 Symfony2 项目中安装了 Sonata Admin Bundle。这是我的 composer.json 的要求:

    "require": {
    "php": ">=5.3.9",
    "symfony/symfony": "2.7.*",
    "doctrine/orm": "~2.2,>=2.2.3,<2.5",
    "doctrine/dbal": "<2.5",
    "doctrine/doctrine-bundle": "~1.4",
    "symfony/assetic-bundle": "~2.3",
    "symfony/swiftmailer-bundle": "~2.3",
    "symfony/monolog-bundle": "~2.4",
    "sensio/distribution-bundle": "~4.0",
    "sensio/framework-extra-bundle": "~3.0,>=3.0.2",
    "incenteev/composer-parameter-handler": "~2.0",
    "doctrine/doctrine-migrations-bundle": "^1.0",
    "friendsofsymfony/user-bundle": "~2.0@dev",
    "cunningsoft/chat-bundle": "^0.4.0",
    "knplabs/knp-time-bundle": "^1.3",
    "knplabs/knp-paginator-bundle": "^2.4",
    "knplabs/knp-menu-bundle": "~2",
    "twig/extensions": "^1.3",

    "sonata-project/core-bundle": "^2.3",
    "sonata-project/block-bundle": "^2.3.8",
    "sonata-project/admin-bundle": "dev-master",
    "sonata-project/doctrine-orm-admin-bundle": "^2.3"
},

我正在使用 dev-master 版本,但这个问题似乎也出现在 2.3 版本上。

我有一些用户发布的帖子,每当我想使用高级过滤器过滤某些东西时,高级过滤器在过滤后就消失了,但是如果我重新检查 'advanced filters' link,它们就会出现里面有值。

这发生在 dev-master 和 2.3 版本中,它发生在所有实体上,而不仅仅是这个。

我已经检查了 Sonata Sandbox 演示,并没有出现这种情况。怎么会?它是启用此功能的设置吗?或者是某个版本?如何让高级滤镜过滤后保持可见?

在过滤之前,我通过'Details'

添加了一个过滤器

过滤后,高级过滤框消失:

但是如果我再次按 'Advanced filters' link,它会出现并且仍然选择了 'does not contain' 选项。

看来这实际上是他们有意为之的行为???

/* Advanced filters */
if (jQuery('.advanced-filter :input:visible', subject).filter(function () {     return jQuery(this).val() }).length === 0) {
    jQuery('.advanced-filter').hide();
};

我不知道他们为什么要这样做......

发生在vendor/sonata-project/admin-bundle/Resources/public/Admin.js

如果您将此文件复制到您自己的包中(将 SonataAdminBundle 作为父包),并注释 vendor/sonata-project/admin-bundle/Resources/public 行,您应该会得到您正在寻找的行为。