表格规格筛选器
<h1>表格规格筛选器</h1>
<p>这个功能用来构建类似淘宝或京东商品的规格选择。</p>
<p><a href="{{public}}/assets/img/screenshots/grid-selector.png" target="_blank">
<img src="{{public}}/assets/img/screenshots/grid-selector.png" style="box-shadow:0 1px 6px 1px rgba(0, 0, 0, 0.12)" width="100%" >
</a></p>
<h3>基本使用</h3>
<p>> {tip} <code>select</code>和<code>selectOne</code>方法的第二个参数为选择器<code>label</code>, 可以省略,如果省略的话将会自动使用翻译文件的翻译.</p>
<p>如下代码所示,假设<code>brand</code>字段的4个取值分别对应4个品牌,下面的方式会构建出<code>brand</code>的规格选择器</p>
<pre><code class="language-php">use Dcat\Admin\Grid;
$grid-&gt;selector(function (Grid\Tools\Selector $selector) {
$selector-&gt;select('brand', '品牌', [
1 =&gt; '华为',
2 =&gt; '小米',
3 =&gt; 'OPPO',
4 =&gt; 'vivo',
]);
});</code></pre>
<p><code>select</code>方法默认是多选的,在页面上点击每一个选项的右边的加号,这个字段的查询会增加一个查询选项,如果字段筛选只允许选择一项,使用<code>selectOne</code>方法</p>
<pre><code class="language-php">$selector-&gt;selectOne('brand', '品牌', [
1 =&gt; '华为',
2 =&gt; '小米',
3 =&gt; 'OPPO',
4 =&gt; 'vivo',
]);</code></pre>
<h3>关联关系字段查询</h3>
<p>如果安装了 <a href="https://github.com/jqhph/laravel-wherehasin">dcat/laravel-wherehasin</a>,则会优先使用<code>whereHasIn</code>方法进行查询操作</p>
<pre><code class="language-php">use Dcat\Admin\Grid;
$grid-&gt;selector(function (Grid\Tools\Selector $selector) {
$selector-&gt;select('brand.id', '品牌', [
1 =&gt; '华为',
2 =&gt; '小米',
3 =&gt; 'OPPO',
4 =&gt; 'vivo',
]);
});</code></pre>
<h3>自定义查询</h3>
<p>上面的方式会使用在选择器上选定的值,作为查询条件进行查询,但是有些情况需要更灵活的控制查询方式,那么可以使用下面的方式自定义查询:</p>
<pre><code class="language-php">$selector-&gt;select('price', '价格', ['0-999', '1000-1999', '2000-2999'], function ($query, $value) {
$between = [
[0, 999],
[1000, 1999],
[2000, 2999],
];
$value = current($value);
$query-&gt;whereBetween('price', $between[$value]);
});</code></pre>
<p>如上所示,传入一个匿名函数作为第四个参数,价格字段price选择之后,将会使用匿名函数中的逻辑进行数据查询,这样你可以定义任意的查询方式。</p>