itsimplycom / nova-mcm-repeatable-fields
Laravel Nova 字段。
Requires
- php: >=7.1.0
This package is auto-updated.
Last update: 2024-09-29 05:08:45 UTC
README
此包包含一个 Laravel Nova 字段,允许创建可重复的 '子' 字段集。Nova 用户可以自由创建、重新排序和删除您定义的多个数据行。数据以 JSON 格式保存到数据库中。
示例
安装
您可以通过 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' ] }
底层数据库字段应该是 string
或 text
类型字段。
配置
此包附带各种选项,您可以使用这些选项来定义重复字段中的子字段
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',以及一个链接,用于展开以显示输入的完整数据
您可以覆盖此摘要文本以更具体的内容,例如 '3 dogs'
displayStackedForm
Repeater::make('Dogs') ->displayStackedForm();
默认情况下,一组子字段将作为一系列水平对齐的输入字段显示
这对于只有2个或3个子字段的重复字段工作得很好,然而对于较大的字段集,一个将重复子字段堆叠显示的表单布局通常会更易于使用。您可以使用此选项切换到堆叠布局。
initialRows
Repeater::make('Dogs') ->initialRows(4);
设置初始化时将预添加的行数。对于已有行的表单,将追加至设置的数量。
maximumRows
Repeater::make('Dogs') ->maximumRows(4);
设置最大行数作为上限。达到此限制后,您将无法添加新行。
更新日志
有关最近更改的更多信息,请参阅更新日志。
致谢
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。