Php Sonata管理包,如何不显示任何结果和don';如果用户不';不选择任何过滤器?

Php Sonata管理包,如何不显示任何结果和don';如果用户不';不选择任何过滤器?,php,symfony,sonata-admin,Php,Symfony,Sonata Admin,我有典型的sonata管理列表操作,包括createQuery、configureFormFields等。如何呈现标准页面,但若用户并没有选择任何过滤器,我只向他显示“选择任何过滤器以获得结果” 我可以使用已选中的hasFilters,但仍然执行查询 {% if admin.hasFilters() %} {{ parent() }} {% else %} 我需要一些这样的,但不执行任何查询到数据库 // SomeController public function listActi

我有典型的sonata管理列表操作,包括
createQuery、configureFormFields等。如何呈现标准页面,但若用户并没有选择任何过滤器,我只向他显示“选择任何过滤器以获得结果”

我可以使用已选中的
hasFilters
,但仍然执行查询

{% if  admin.hasFilters() %}
    {{ parent() }}
{% else %}
我需要一些这样的,但不执行任何查询到数据库

// SomeController
public function listAction()
{
    if (!$this->admin->hasFilters()) {
        return $this->renderWithExtraParams($this->admin->getTemplate('list'), [
            'action' => 'list',
            'form' => $this->admin->getDatagrid()->getForm()->createView(),
            'csrf_token' => $this->getCsrfToken('sonata.batch'),
            'export_formats' => $this->has('sonata.admin.admin_exporter') ?
                $this->get('sonata.admin.admin_exporter')->getAvailableFormats($this->admin) :
                $this->admin->getExportFormats(),
        ], null);
    }

    return parent::listAction();
}

这是个乱七八糟的主意,但它起作用了。只需添加以下内容:

public function createQuery($context = 'list')
{
    $query = parent::createQuery($context);

    if (!$this->hasFilters()) {
        $query->where('1 = 0');

        return $query;
    }

    // ...
}

这是个乱七八糟的主意,但它起作用了。只需添加以下内容:

public function createQuery($context = 'list')
{
    $query = parent::createQuery($context);

    if (!$this->hasFilters()) {
        $query->where('1 = 0');

        return $query;
    }

    // ...
}