khaledgamal/nova-filterable-cards

Laravel Nova 的可筛选指标卡片。


README

Latest Version on Packagist Total Downloads Build Status

为您的 Laravel Nova 指标添加自定义过滤器。

screenshot screenshot

安装

您可以通过 composer 在使用 Nova 的 Laravel 应用中安装此包

composer require beyondcode/nova-filterable-cards

用法

要将筛选功能添加到您的 Laravel Nova 指标卡片,您需要将一个 Filterable 特性添加到您的指标中。

根据您的指标类型,以下是可以用的特性

  • FilterableValue
  • FilterableTrend
  • FilterablePartition

例如,在您的自定义 Nova 值指标卡片中

// in your Nova value metric card class:
import Beyondcode\FilterableCard\FilterableValue;

use FilterableValue;

定义过滤器

您可以通过为您的指标添加一个名为 $filters 的新属性来定义卡片上可用的过滤器。这必须是一个数组,包含可用的过滤器名称以及此特定过滤器的属性。

示例

// in your filterable Nova metric card class:

protected $filters = [
	'Firstname' => [
		'type' => 'text'
	],
	'Status' => [
		'type' => 'select',
		'options' => [
			'all' => 'All',
			'active' => 'Active',
			'inactive' => 'Inactive'
		],
	]
];

使用定义方法定义过滤器

有时您可能希望通过数据库调用或从配置中加载来设置可用的过滤器选项。为了启用此功能,您还可以使用以下命名约定定义过滤器选项: defineStudlyCaseFilterName

例如,如果您想添加并定义一个名为 User Status 的自定义过滤器,您可以这样操作

// in your filterable Nova metric card class:

protected $filters = [
	'Firstname' => [
		'type' => 'text'
	],
	'User Status'
];

public function defineUserStatus()
{
	return [
		'type' => 'select',
		'options' => [
			'all' => 'All',
			'active' => 'Active',
			'inactive' => 'Inactive'
		],
	];
}

可用的过滤器类型

可用的过滤器类型有

  • 选择
  • 复选框
  • 文本
  • 电子邮件
  • 网址
  • 数字

以及可以应用于 HTML <input> 标签的所有其他类型。

应用筛选逻辑

为了定义在用户通过模态筛选自定义指标查询时,您想要如何筛选查询,您需要定义自定义筛选方法。命名约定与定义自定义筛选选项类似。它是 filterStudlyCaseFilterName

此方法接收一个查询构建器对象和过滤器输入的值。您可以向构建器类添加自己的查询并按需修改。只需确保您返回查询对象即可。

示例

// in your filterable Nova metric card class:

public function filterUserStatus($query, $status)
{
	return $query->where('status', $status);
}

测试

composer test

变更日志

请参阅 CHANGELOG 了解最近有哪些变化。

贡献

请参阅 CONTRIBUTING 了解详情。

安全

如果您发现任何与安全相关的问题,请通过电子邮件 marcel@beyondco.de 而不是使用问题跟踪器。

鸣谢

许可

MIT 许可证 (MIT)。请参阅 许可文件 了解更多信息。