wdelfuego / nova-datetime
简化Laravel Nova 4中DateTime字段工作的包
Requires
- php: ^7.4|^8.0
- laravel/nova: ^4.2.4
README
此包添加了一个支持全局DateTime
格式的DateTime字段,为单独的DateTime
字段提供了语法糖,并为索引视图提供了强大的日期过滤器。它可以作为在Laravel的Nova 4中处理DateTime
字段和逻辑的扩展和改进的基础。
安装
composer require wdelfuego/nova-datetime
用法
全局格式化DateTime
字段
-
首先,通过运行以下命令发布此包的配置文件:
php artisan vendor:publish --provider="Wdelfuego\Nova\DateTime\ServiceProvider"
-
然后,在
config/nova-datetime.php
中设置您想要用于所有DateTime
字段的自定义格式,例如return [ 'globalFormat' => 'Y-M-d H:i:s', ];
-
在您的Nova资源中,通过添加此use语句将所有
Laravel\Nova\Fields\DateTime
实例替换为Wdelfuego\Nova\DateTime\Fields\DateTime
实例use Wdelfuego\Nova\DateTime\Fields\DateTime;
这允许您自动将全局格式应用到您自己的Nova资源中的所有DateTime
字段。
要自动将全局DateTime
格式应用到资源操作日志中“操作发生时间”列,请安装wdelfuego/nova-actions包。
格式化单独的DateTime
字段
以下示例假设用于Nova资源的Eloquent模型有一个名为'attribute'的属性。
withDateFormat
辅助函数会自动添加到您的项目中所有DateTime
字段(包括Nova自带的,因此您不需要使用自定义DateTime字段),并允许您直接设置字段的显示格式
DateTime::make(__('Localized label'), 'attribute')
->withDateFormat('d-M-Y, H:i'),
这是一个简单的语法糖,基于从Nova 4.2.4开始工作的displayUsing
方法。
通过DateTime
字段筛选资源
您可以使用Laravel的本地filterable
方法在您的DateTime
字段上进行标准日期范围筛选,或使用以下日期筛选器中的任何组合,为最终用户提供从索引视图筛选Nova资源的有力方式。
OnDate
仅显示与特定日期匹配的DateTime字段项NotOnDate
仅显示DateTime字段不在特定日期的项AfterDate
仅显示DateTime字段在特定日期之后的项AfterOrOnDate
仅显示DateTime字段在特定日期之后或该日期的项NotAfterDate
仅显示DateTime字段不在特定日期之后的项(这是BeforeOrOnDate
的完全等价别名)BeforeDate
仅显示DateTime字段在特定日期之前的项BeforeOrOnDate
仅显示DateTime字段在特定日期之前或该日期的项NotBeforeDate
仅显示DateTime字段不在特定日期之前的项(这是AfterOrOnDate
的完全等价别名)
您可以将这些筛选器的组合添加到Nova资源中,允许最终用户定义日期范围。
例如,您可以创建一个标准日期范围筛选器,允许用户排除特定日期,如下所示
use Wdelfuego\Nova\DateTime\Filters\AfterDate;
use Wdelfuego\Nova\DateTime\Filters\BeforeDate;
use Wdelfuego\Nova\DateTime\Filters\NotOnDate;
public function filters(NovaRequest $request)
{
return [
new AfterDate(__('After'), 'attribute'),
new BeforeDate(__('Before'), 'attribute'),
new NotOnDate(__('But not on'), 'attribute'),
];
}
您还可以仅使用单个OnDate
筛选器进行特定日期筛选,或通过添加单个After
或Before
筛选器强制进行开放式范围筛选。
支持
对于您可能遇到的问题、疑问或意见,请于GitHub上提交一个issue。