在 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
行,您应该会得到您正在寻找的行为。
我已经在我的 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
行,您应该会得到您正在寻找的行为。