reedware/nova-value-toggle

A Laravel Nova 字段,用于根据其他字段的值切换字段。

dev-master / 0.1.x-dev 2020-05-22 16:34 UTC

This package is auto-updated.

Last update: 2024-09-07 21:00:57 UTC


README

安装

使用 composer 安装此包。

composer require reedware/nova-value-toggle

此包使用自动发现,因此不需要您手动添加服务提供者。如果您选择手动操作,可以在服务提供者列表中包含以下类

\Reedware\NovaValueToggle\FieldServiceProvider::class

使用方法

此包创建一个新的 ValueToggle 字段,该字段用于包装现有字段,以便您可以根据另一个字段的值切换字段的可见性(在详细页面和编辑页面均可)。

首先,在您可以使用该字段之前,您必须将其包含在您的代码中

use Reedware\NovaValueToggle\ValueToggle;

例如,假设您有一个 Flight 模型和资源。以下是在您的 Flight 资源中可能看到的字段

/**
 * Get the fields displayed by the resource.
 *
 * @param  \Illuminate\Http\Request  $request
 *
 * @return array
 */
public function fields(Request $request)
{
    return [
        ID::make('ID', 'id')->sortable(),
        Text::make('Name', 'name')->sortable()->rules('required'),
        Select::make('Lands On', 'lands_on')->options([
            'land' => 'Land',
            'water' => 'Water'
        ]),
        Number::make('Wheel Count', 'wheel_count')->min(1)->max(1000)->step(1)
}

对于在水中降落的航班,您希望假设轮子数量为 0。您可以提供验证,但这样您将有一个无用的字段占用更新表单的可见空间。相反,您可以在预计航班将在水中降落时隐藏该字段。

这就是 ValueToggle 字段发挥作用的地方

/**
 * Get the fields displayed by the resource.
 *
 * @param  \Illuminate\Http\Request  $request
 *
 * @return array
 */
public function fields(Request $request)
{
    return [
        ID::make('ID', 'id')->sortable(),
        Text::make('Name', 'name')->sortable()->rules('required'),
        Select::make('Lands On', 'lands_on')->options([
            'land' => 'Land',
            'water' => 'Water'
        ]),
        ValueToggle::make(Number::make('Wheel Count', 'wheel_count')->min(1)->max(1000)->step(1), function($toggle) {
            return $toggle->where('lands_on', '=', 'land');
        })
    ];
}

我们仍然有原始的 "Wheel Count" 字段,但它已经被传递给 ValueToggle 的第一个参数。第二个参数是一个闭包,它描述了您希望在何时显示该字段。