在 Laravel 10 / nova 4.27 应用程序中,我在编辑器中仅显示 Publication_at 字段 状态字段的 ACTIVE 值为:
Badge::make(__('Status'), 'status')->required()
->options(ProductStatusEnum::getStatusSelectionItems())->hideFromDetail()->hideWhenUpdating()
->colors(ProductStatusEnum::getStatusColors(hexValue: true))->displayUsingLabels(),
Date::make(__('Published at'), 'published_at')
->displayUsing(fn($value) => $value ? DateConv::getFormattedDateTime($value) : '--')
->showOnDetail(function () use ($status) { // in view mode "/nova/resources/products/17"
return $status === ProductStatusEnum::ACTIVE;
})
->showOnUpdating(function () use ($status) { // in edit mode "/nova/resources/products/17/edit"
return $status === ProductStatusEnum::ACTIVE;
})
->sortable(),
当我打开现有模型时它工作正常,但是如果有办法显示/隐藏published_at Date输入,具体取决于 在表单中反应性地选择哪种状态?
看一下
Laravel Nova Field的
dependsOn
功能。
这样的东西可能会起作用:
Date::make(__('Published at'), 'published_at')
->displayUsing(fn($value) => $value ? DateConv::getFormattedDateTime($value) : '--')
->sortable()
->dependsOn(['status'], function (Date $field, NovaRequest $request, FormData $formData) {
// Check if the status is 'ACTIVE'
$field->visible($formData->status === ProductStatusEnum::ACTIVE);
}),