如何在带有选项卡的编辑器中获取当前模型?

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

在 Laravel 10 / nova 4.27 应用程序中,我使用选项卡制作大编辑器(“eminiarts/nova-tabs”:“^2.2”)和 我需要显示/隐藏选项卡之一,具体取决于

other_shipping
字段的值。我还需要获取已打开订单的状态并设置标题 文字(背景颜色取决于当前状态)。

我试着把它做成:

    public function fields(NovaRequest $request)
    {
        $isEdit = ! empty($this->id);
        \Log::info(' -13 fields $isEdit::');
        \Log::info(json_encode($isEdit));
        $editorTitle = 'Select status manually';
        $headingBgColor = 'text-white-100';

        $otherShipping= false;
        $status = null;
        if($isEdit) {
            $otherShipping = (bool) $this->other_shipping?->value;
            $status = $this->status;
        }

        \Log::info(' -145 $status::');
        \Log::info(json_encode($status));
        $statusOptions = OrderStatusEnum::getStatusSelectionItems();
        if ($isEdit) {
            $headingBgColor = OrderStatusEnum::getStatusColors(hexValue: false)[$status->value];
            $editorTitle = ' With "'.OrderStatusEnum::getLabel($this->status).'" status use buttons to change status';
        }

        return [
            Heading::make('<p class="text-xl font-bold '.$headingBgColor.'">'.$editorTitle.'</p>')->asHtml(),
            Tabs::make('Order editor', [
                Tab::make('Details', [
                    BelongsTo::make(name:'Creator', attribute:'creator', resource:User::class),

            ...


            Tab::make('Billing Information', $this->getBillingFields())->showIf(condition:$otherShipping),

        ...

但这不起作用。我需要检查页面是否处于

index
updating
creating
detail
模式... 我该怎么做呢?另外如何在
updating
detail
模式下访问模型?

laravel-nova
1个回答
0
投票

这是一个有内涵的问题!首先使用

isEdit
修复
NovaRequest
逻辑,以正确检测您是否处于
update
detail
模式:

$isEdit = $request->isUpdateOrUpdateAttachedRequest() || $request->isResourceDetailRequest();
© www.soinside.com 2019 - 2024. All rights reserved.