Skip to content

查询过滤

查询过滤

model-grid 提供了一系列的方法实现表格数据的查询过滤:

php
// 禁用
$table->disableFilter();
// 显示
$table->showFilter();

// 禁用过滤器按钮
$table->disableFilter();
// 显示过滤器按钮
$table->showFilter();

$table->filter(function($filter){
    // 禁用id过滤器
    $filter->disableIdFilter();
    // 展开过滤器
    $filter->expand();

    // 在这里添加字段过滤器
    $filter->equal('id', '产品序列号');
    $filter->like('name', 'name');
    // 自定义列(一行为12)
    $filter->column(3,function (Grid\Filter $filter){
                $filter->equal('level2', "等级");
    });
    $filter->column(4,function (Grid\Filter $filter){
        /*$filter->equal('level', "等级")->radio(["等级1","等级2","等级3"]);
        $filter->equal('level_list', "等级")->checkbox(["等级1","等级2","等级3"]);*/
        $filter->equal('level', "等级")->select(["等级1","等级2","等级3"]);
        $filter->equal('level_list', "等级")->multipleSelect(["等级1","等级2","等级3"]);
    });
    ...

});

开启筛选快捷键

按ctrl+F会展开筛选,按ESC键重置筛选

php
$table->enableFilterShortcut();

查询类型

目前支持的过滤类型有下面这些:

equal

sql: ... WHERE column = "$input":

php
$filter->equal('column', $label);

notEqual

sql: ... WHERE column != "$input":

php
$filter->notEqual('column', $label);

like

sql: ... WHERE column LIKE "%$input%":

php
filter->like('column', $label);

表单类型

text

表单类型默认是 text input,可以设置 placeholder:

php
$filter->equal('column')->placeholder('请输入。。。');

也可以通过下面的一些方法来限制用户输入格式:

php
$filter->equal('column')->url();

$filter->equal('column')->email();

$filter->equal('column')->integer();

$filter->equal('column')->ip();

$filter->equal('column')->mac();

$filter->equal('column')->mobile();

// $options 参考 https://github.com/RobinHerbots/Inputmask/blob/4.x/README_numeric.md
$filter->equal('column')->decimal($options = []);

// $options 参考 https://github.com/RobinHerbots/Inputmask/blob/4.x/README_numeric.md
$filter->equal('column')->currency($options = []);

// $options 参考 https://github.com/RobinHerbots/Inputmask/blob/4.x/README_numeric.md
$filter->equal('column')->percentage($options = []);

// $options 参考 https://github.com/RobinHerbots/Inputmask, $icon为input前面的图标
$filter->equal('column')->inputmask($options = [], $icon = 'pencil');

select

php
$filter->equal('column')->select(['key' => 'value'...]);

// 或者从api获取数据,api的格式参考model-form的select组件
$filter->equal('column')->select('api/users');