规格筛选器

未匹配的标注

表格规格筛选器

这个功能用来构建类似淘宝或京东商品的规格选择。

基本使用

selectselectOne方法的第二个参数为选择器label, 可以省略,如果省略的话将会自动使用翻译文件的翻译.

如下代码所示,假设brand字段的4个取值分别对应4个品牌,下面的方式会构建出brand的规格选择器

use Dcat\Admin\Grid;

$grid->selector(function (Grid\Tools\Selector $selector) {
    $selector->select('brand', '品牌', [
        1 => '华为',
        2 => '小米',
        3 => 'OPPO',
        4 => 'vivo',
    ]);
});

select方法默认是多选的,在页面上点击每一个选项的右边的加号,这个字段的查询会增加一个查询选项,如果字段筛选只允许选择一项,使用selectOne方法

$selector->selectOne('brand', '品牌', [
    1 => '华为',
    2 => '小米',
    3 => 'OPPO',
    4 => 'vivo',
]);

关联关系字段查询

如果安装了 dcat/laravel-wherehasin,则会优先使用whereHasIn方法进行查询操作

use Dcat\Admin\Grid;

$grid->selector(function (Grid\Tools\Selector $selector) {
    $selector->select('brand.id', '品牌', [
        1 => '华为',
        2 => '小米',
        3 => 'OPPO',
        4 => 'vivo',
    ]);
});

自定义查询

上面的方式会使用在选择器上选定的值,作为查询条件进行查询,但是有些情况需要更灵活的控制查询方式,那么可以使用下面的方式自定义查询:

$selector->select('price', '价格', ['0-999', '1000-1999', '2000-2999'], function ($query, $value) {
    $between = [
        [0, 999],
        [1000, 1999],
        [2000, 2999],
    ];

    $value = current($value);

    $query->whereBetween('price', $between[$value]);
});

如上所示,传入一个匿名函数作为第四个参数,价格字段price选择之后,将会使用匿名函数中的逻辑进行数据查询,这样你可以定义任意的查询方式。

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 1
发起讨论 只看当前版本


Ricc
有考虑设置默认选择的功能吗?
0 个点赞 | 2 个回复 | 问答 | 课程版本 2.x