wdelfuego / nova4-formattable-date
v1.0.2
2022-04-21 21:24 UTC
Requires
- laravel/nova: ^4.0
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;