angauber / nova-select2-filter
一个Laravel Nova过滤器。
v1.1.0
2019-12-15 21:09 UTC
Requires
- php: >=7.1.0
This package is auto-updated.
Last update: 2024-09-21 20:38:39 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文档
示例
假设你想要实现一个多选来过滤一个User模型在多对多关系上的,你可以这样做:
<?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::pluck('name', 'id');
}
public function config(): array {
return [
'multiple' => true,
'allowClear' => true,
'placeholder' => 'Choose option(s)',
];
}
}