bourne / nova-select2-filter
一个 Laravel Nova 过滤器。
dev-master
2021-03-06 07:17 UTC
Requires
- php: >=7.1.0
This package is auto-updated.
Last update: 2024-09-11 22:12:46 UTC
README
支持单选和多选
安装
composer require angauber/nova-select2-filter
用法
使用以下命令创建一个新的过滤器
php artisan nova:filter MyNewFilter
然后替换其内容如下
<?php
namespace App\Nova\Filters;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Http\Request;
use Angauber\NovaSelect2Filter\NovaSelect2Filter;
class ContactType extends NovaSelect2Filter
{
public $component = 'nova-select2-filter';
public function apply(Request $request, $query, $value) {
return $query;
}
public function options(Request $request) {
return [];
}
public function config() {
return [
'multiple' => true,
'allowClear' => true,
'placeholder' => 'Choose option(s)',
];
}
}
apply()
方法的 $value
参数将根据 config
方法中 multiple
是否设置为 true
或 false
而是字符串数组或字符串
option()
方法必须返回一个 key
=> value
的数组
config()
方法必须返回包含 select2 配置参数的数组。请参阅 Select2 文档
示例
假设你想要在多对多关系上对用户模型进行多选过滤,你可以这样做
<?php
namespace App\Nova\Filters;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Http\Request;
use Angauber\NovaSelect2Filter\NovaSelect2Filter;
use \App\Models\UserType;
class ContactType extends NovaSelect2Filter
{
public $component = 'nova-select2-filter'
public function apply(Request $request, $query, $value) {
return $query->whereHas('type', function(Builder $query) use ($value) {
$query->whereIn('types.id', $value)
});
}
public function options(Request $request) {
return UserType::p"luck('username', 'id');
}
public function config(): array {
return [
'multiple' => true,
'allowClear' => true,
'placeholder' => 'Choose option(s)',
];
}
}