wdelfuego/nova4-formattable-date

此包已废弃且不再维护。作者建议使用wdelfuego/nova-datetime包代替。

为Laravel的Nova 4提供的可格式化日期字段

v1.0.2 2022-04-21 21:24 UTC

This package is auto-updated.

Last update: 2022-04-21 22:59:13 UTC


README

版本1.0.2是此包的最终版本。如果您正在使用Nova 4.2.4或更高版本,并且想继续使用withDateFormat助手或此包引入的自定义过滤器,请使用通用的wdelfuego/nova-datetime包。

截至Nova 4.2.4,自定义日期格式在Nova中原生支持

此包重新引入了Nova 4资源中的自定义日期格式,并附带了一些自定义过滤器,以解决此讨论中描述的问题。

安装

将依赖项添加到您的项目composer.json

composer require wdelfuego/nova4-formattable-date

使用

以下示例假设用于Nova资源的Eloquent模型有一个名为'attribute'的属性。

格式化

在您的Nova资源fields方法中,像往常一样添加一个DateTime字段,但添加一个调用withDateFormat以设置您希望在索引和资源视图中显示的格式。

    Fields\DateTime::make(__('Localized label'), 'attribute')
        ->withDateFormat('d-M-Y, H:i'),

此字段将自动从Nova表单中隐藏,因此添加另一个没有withDateFormat的相同属性的DateTime字段,以便您的最终用户可以在表单上编辑该字段。

    Fields\DateTime::make(__('Localized label'), 'attribute')
        ->onlyOnForms(),

具有自定义日期格式的字段可以像往常一样设置为sortable,但与自定义日期格式结合使用时filterable选项不起作用,因此如果您想允许最终用户根据格式化的DateTime列过滤索引视图,请参阅下一节以添加此包附带的自定义过滤器。

过滤

此包附带5种不同的过滤器

  • DateFilter仅显示日期与过滤器值匹配的项目
  • DateFilterAfter仅显示日期晚于过滤器值的项目
  • DateFilterAfterOrOn仅显示日期晚于或与过滤器值相同的日期的项目
  • DateFilterBefore仅显示日期早于过滤器值的项目
  • DateFilterBeforeOrOn仅显示日期早于或与过滤器值相同的日期的项目

您可以将这些过滤器的组合添加到Nova资源中,以便最终用户可以定义日期范围。

例如

    public function filters(NovaRequest $request)
    {
        return [
            new DateFilterAfter(__('After'), 'attribute'),
            new DateFilterBefore(__('Before'), 'attribute'),
        ];
    }

您也可以仅过滤特定日期(使用单个DateFilter)或通过仅添加其他四个过滤器之一来强制开放范围过滤。

别忘了将所需的过滤器正确的use语句添加到资源文件中

use Wdelfuego\Nova4\FormattableDate\Filters\DateFilter;
use Wdelfuego\Nova4\FormattableDate\Filters\DateFilterAfter;
use Wdelfuego\Nova4\FormattableDate\Filters\DateFilterAfterOrOn;
use Wdelfuego\Nova4\FormattableDate\Filters\DateFilterBefore;
use Wdelfuego\Nova4\FormattableDate\Filters\DateFilterBeforeOrOn;