首页 > 解决方案 > 如何在 Backpack for Laravel 中启用过滤器?

问题描述

我正在查看文档页面:https ://backpackforlaravel.com/docs/4.1/crud-filters 。

一个简单的问题是:我必须在哪里打电话$this->crud->filters()?我试图在我的控制器的末尾添加setupListOperation(),但我没有在我的表格上看到过滤器。出于好奇:我将 esit 的调用分配给 var 并将其转储,这是一个空集合。

protected function setupListOperation()
{
    CRUD::setFromDb(); // columns
    CRUD::column('assignmentTypes')->type('relationship');

    /**
     * Columns can be defined using the fluent syntax or array syntax:
     * - CRUD::column('price')->type('number');
     * - CRUD::addColumn(['name' => 'price', 'type' => 'number']);
     */

    dd($this->crud->filters()); // <<<<------------- EMPTY COLLECTION!
}

请注意,手动添加过滤器有效!

$this->crud->addFilter([
    'type' => 'text',
    'name' => 'first_name',
    'label' => 'First Nane'
], false,
    function ($value) { // if the filter is active
        $this->crud->addClause('where', 'first_name', 'LIKE', "%$value%");
    }
);

但我问你为什么filters()不自动做某事。

标签: laravellaravel-8laravel-backpack

解决方案


您可以使用$this->crud->filters()CRUD::filters()在任何您喜欢的地方使用它,但最有意义的是setupListOperation()像您一样使用它,但在您已经添加了一些过滤器之后。在addFilter()语句之前,结果是一个空集合,因为没有过滤器。

如果您将背包过滤器添加到列表操作,则会自动启用背包过滤器。


推荐阅读