itsimplycom/nova-mcm-repeatable-fields

Laravel Nova 字段。

v1.0.1 2018-09-22 06:48 UTC

This package is auto-updated.

Last update: 2024-09-29 05:08:45 UTC


README

此包包含一个 Laravel Nova 字段,允许创建可重复的 '子' 字段集。Nova 用户可以自由创建、重新排序和删除您定义的多个数据行。数据以 JSON 格式保存到数据库中。

示例

Nova repeatable field set on Nova form view

安装

您可以通过 composer 在使用 Nova 的 Laravel 应用中安装此包

composer require fourstacks/nova-repeatable-fields

用法

要添加重复字段,请在使用 Nova 资源的代码中使用 Fourstacks\NovaRepeatableFields\Repeater 字段

namespace App\Nova;

use Fourstacks\NovaRepeatableFields\Repeater;

// ...

class Petstore extends Resource
{
    // ...
    
    public function fields(Request $request)
    {
        return [
            // ...
            
            Repeater::make('Dogs'),

            // ...
        ];
    }
}

为了使用此包,您还应确保您 Nova 资源表示的 Eloquent 模型正在将您想要用作重复字段的属性转换为数组

namespace App;

// ...

class Petstore extends Model
{
    protected $casts = [
        'dogs' => 'array'
    ]
}

底层数据库字段应该是 stringtext 类型字段。

配置

此包附带各种选项,您可以使用这些选项来定义重复字段中的子字段

addField

参数: array

您创建的每个重复字段至少应包含一个通过 addField 添加的子字段。addField 方法接受一个子字段配置选项数组

Repeater::make('Dogs')
    ->addField([
        // configuation options
    ])
         

配置选项包括

label
[ 
    'label' => 'Dog name',
    //...
]

所有子字段至少必须定义一个 'label'。这是一个可读的字符串,将在 Nova UI 中显示。

name
[ 
    'name' => 'dog_name',
    //...
]

默认情况下,子字段的 name(用于在数据库中保存数据)将自动生成,使用子字段 label 的蛇形版本。或者,您可以自由覆盖此约定并定义一个自定义名称来使用。

type
[ 
    'type' => 'number',
    //...
]

默认情况下,子字段的输入类型将是一个标准文本字段。如果您愿意,可以定义不同的字段类型。目前支持的子字段类型是:'text'、'number'、'select'。

placeholder
[ 
    'placeholder' => 'Name that dog',
    //...
]

默认情况下,输入 placeholder 将与子字段 label 相同。但是,您可以使用此选项定义一个自定义占位符,该占位符将显示出来。

[ 
    'width' => 'w-1/2',
    //...
]

如果您选择将子字段显示为一行(而不是堆叠 - 如下文中的 displayStackedForm 选项所示),则可以使用 Tailwind 的分数宽度类 定义您的字段宽度。除非您想定义所有字段的宽度,否则不需要定义宽度。如果任何子字段未输入宽度,则所有子字段将具有相同的宽度。

如果您将子字段显示为堆叠布局,则宽度选项将不起作用。

options
[ 
    'options' => [
        'fido' => 'Fido',
        'mr_bubbles' => 'Mr Bubbles',
        'preston' => 'Preston'
    ]',
    //...
]

如果您正在定义的子字段的 type 是 'select',则需要定义选择字段的选项数组。这些是通过键/值对数组定义的。

addButtonText

Repeater::make('Dogs')
    ->addButtonText('Add new dog');

您可以配置用于在 Nova UI 中添加新子字段集的按钮的文本。默认情况下,此按钮标为 'Add row',但您可以使用 addButtonText 选项来覆盖它。

summaryLabel

Repeater::make('Dogs')
    ->summaryLabel('Dogs');

详细视图和索引视图将显示使用重复字段输入的数据的摘要。默认情况下,这将显示行数,例如 '3 rows',以及一个链接,用于展开以显示输入的完整数据

Nova repeatable field set on Nova index view - collapsed state

您可以覆盖此摘要文本以更具体的内容,例如 '3 dogs'

Nova repeatable field set on Nova index view - expanded state

displayStackedForm

Repeater::make('Dogs')
    ->displayStackedForm();

默认情况下,一组子字段将作为一系列水平对齐的输入字段显示

Nova repeatable field set on Nova form view - default horizontal fields

这对于只有2个或3个子字段的重复字段工作得很好,然而对于较大的字段集,一个将重复子字段堆叠显示的表单布局通常会更易于使用。您可以使用此选项切换到堆叠布局。

initialRows

Repeater::make('Dogs')
    ->initialRows(4);

设置初始化时将预添加的行数。对于已有行的表单,将追加至设置的数量。

maximumRows

Repeater::make('Dogs')
    ->maximumRows(4);

设置最大行数作为上限。达到此限制后,您将无法添加新行。

更新日志

有关最近更改的更多信息,请参阅更新日志

致谢

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件