Sonata 管理包,如果用户不选择任何过滤器,如何不显示任何结果并且不执行对数据库的任何查询?

我有典型的奏鸣曲管理员列表操作createQuery, configureFormFields, etc。我如何呈现标准页面但如果用户不选择任何过滤器,我只向他显示“选择任何过滤器以获得结果”?


我可以使用已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();

}


阿波罗的战车
浏览 119回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP