harrald/nova-combobox-filter

一个 Laravel Nova 的 combobox 过滤器。支持选择多个项目

1.1.1 2024-02-20 22:06 UTC

This package is auto-updated.

Last update: 2024-09-20 23:39:01 UTC


README

Latest Version on Packagist Total Downloads Total Downloads Total Downloads

此组件基于 Headless UI Combobox 组件,并增加了 Laravel Nova 的多选过滤器。

要求

  • php: >=7.3
  • laravel/nova: ^4.0

安装

通过 Composer 安装

composer require harrald/nova-combobox-filter

用法

nova-combobox-filter 扩展了 Nova 选择过滤器。因此,其实现逻辑与实现方式相同。

过滤器

App/Nova/Filters 中创建一个新的过滤器类,并让它继承 \Harrald\NovaComboboxFilter\NovaComboboxFilter 类。

使用以下格式

<?php

namespace App\Nova\Filters;

use Harrald\NovaComboboxFilter\NovaComboboxFilter;
use Illuminate\Http\Request;
use Illuminate\Support\Collection;

class OpenPaidStateFilter extends NovaComboboxFilter
{
    /**
     * The displayable name of the filter.
     *
     * @var string
     */
    public $name = 'State';

    /**
     * The name of the column to filter on
     */
    protected function columnName(): string
    {
        return 'state';
    }

    /**
     * Get the filter's available options.
     */
    public function options(Request $request): Collection
    {
        return Collection::make([
            'Open' => 'open',
            'Paid' => 'paid',
        ]);
    }
}
  • $name 属性是过滤器的显示名称。
  • columnName 方法必须返回要过滤的列的名称
  • options 方法应返回一个包含键/值对的 Illuminate\Support\Collection

具有动态选项

public function options(Request $request): Collection
{
    return User::all()->pluck('id', 'name');
}

资源

在您的新资源中使用此过滤器。遵循与其他 Nova 过滤器相同的逻辑。

/**
 * Get the filters available for the resource.
 *
 * @param NovaRequest $request
 * @return array
 */
public function filters(NovaRequest $request): array
{
    return [
        OpenPaidStateFilter::make(),
    ];
}

屏幕截图

multi options selected

filter options by typing

致谢

此包受 optimistdigital/nova-multiselect-filter 的启发。

许可证

此项目是开源软件,许可协议为 MIT。