如何根据表单中选择的状态显示/隐藏日期输入?

问题描述 投票:0回答:1

在 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
1个回答
0
投票

看一下

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);
    }),
© www.soinside.com 2019 - 2024. All rights reserved.