如何在 Laravel 的背包中启用过滤器?

How to enable filters in Backpack for Laravel?

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

简单的问题是:我必须在哪里调用 $this->crud->filters()?我试图在我的控制器中 setupListOperation() 的末尾添加,但我没有在我的 table 上看到过滤器。出于好奇:我将调用的 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()不自动做某事。

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

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