nakukryskin / orchid-repeater-field
将重复字段支持添加到Orchid RAD平台。
Requires
- laravel/framework: ^9.21
- orchid/platform: ^13.0.1
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.8
- mockery/mockery: ^1.1
- phpunit/phpunit: ^9.0
- sempro/phpunit-pretty-print: ^1.0
- dev-develop
- 13.0.2
- 13.0.1
- 13.0.0
- 5.0.1
- 5.0.0
- 4.0.1
- 4.0.0
- 3.0.1
- 3.0.0
- 2.0.5
- 2.0.4
- 2.0.3
- 2.0.2
- 2.0.1
- 2.0.0
- 1.0.0
- 0.0.8
- 0.0.7
- 0.0.6
- 0.0.5
- 0.0.4
- 0.0.3
- 0.0.2
- 0.0.1
- dev-dependabot/npm_and_yarn/axios-1.6.0
- dev-dependabot/npm_and_yarn/browserify-sign-4.2.2
- dev-dependabot/npm_and_yarn/babel/traverse-7.23.2
- dev-dependabot/npm_and_yarn/postcss-8.4.31
- dev-dependabot/npm_and_yarn/squirrelly-9.0.0
- dev-dependabot/npm_and_yarn/loader-utils-1.4.2
- dev-master
- dev-analysis-6VVa1o
- dev-update-repeater-field
- dev-send-values-for-all-blocks
- dev-analysis-XWQpp5
- dev-analysis-8QbMlw
- dev-analysis-8A02aV
- dev-analysis-8Ka4o2
This package is auto-updated.
Last update: 2024-03-21 09:23:42 UTC
README
简介
我们都曾在某个时候使用过WordPress。受Advanced Custom Fields的启发。
此包将重复字段支持添加到Orchid RAD平台。
预要求
您必须已安装并配置Orchid Platform
版本支持: .*
对于^13.0.1版本,请使用^13.0.0标签及更高版本。
旧版本不支持当前大多数功能。
对于6.*版本,请使用2.0.5标签。
对于5版本,请使用1.0.0标签。
对于4.7.1版本,请使用0.0.8标签。
如何使用
-
使用composer安装包:
composer require nakukryskin/orchid-repeater-field
laravel的最新版本将自动发现并使用包。
-
在您的Orchid布局目录中创建
RepeaterFields.php
。示例
<?php namespace App\Http\Orchid\Layouts\Repeaters; use Orchid\Screen\Layouts\Rows; use Orchid\Screen\Fields\Input; use Orchid\Screen\Fields\Select; class RepeaterFields extends Rows { function fields(): array { return [ Input::make('repeater_name') ->type('text') ->max(255) ->required() ->title('Nested Field'), Select::make('select.') ->multiple() ->options([ 'test' => 'Test', 'test2' => 'Test2' ]) ->required() ]; } }
- 只需在您的屏幕中开始添加
RepeaterField::make('repeater')
即可:示例
public function layout(): array { return [ Layout::rows([ RepeaterField::make('repeater') ->title('Repeater') ->layout(App\Http\Orchid\Layouts\Repeaters\RepeaterFields::class), ]) ]; }
- 打开您的屏幕并检查此处是否有重复字段
高级使用
重复字段也支持必需、最大和最小参数。您可以通过调用RepeaterField来添加这些参数。
RepeaterField::make('repeater') ->title('Repeater') ->layout(App\Http\Orchid\Layouts\Repeaters\RepeaterFields::class) ->required() ->min(10) ->max(20)
如果将->required()
传递给构造函数,则自动将min
设置为1。如果用户尝试删除此字段,则会阻止并显示消息。
您还可以使用->confirmText('Are you sure that you want to delete the block?')
方法更改删除块时的文本。
要显示保存时的必需消息,您必须将此规则添加到您的屏幕规则中,例如'content.*.repeater' => 'required'
您还可以使用buttonLabel()
方法重命名按钮标签。例如。
RepeaterField::make('repeater') ->title('Repeater') ->layout(App\Http\Orchid\Layouts\Repeaters\RepeaterFields::class) ->buttonLabel('Add new repeater field')
在极端情况下,如果您正在使用某种动态数据加载,并且需要将附加数据传递到您的布局中,请使用->ajaxData()
方法。此方法可以与可调用的函数和数组数据一起工作。这在您需要为每个字段过滤数据时非常有用。
要使用ajaxData,首先将trait AjaxDataAccess
连接到您的布局
<?php namespace App\Orchid\Layouts; use Nakukryskin\OrchidRepeaterField\Traits\AjaxDataAccess; use Orchid\Screen\Layouts\Rows; use Orchid\Screen\Fields\Input; use Orchid\Screen\Fields\Select; class RepeaterFields extends Rows { use AjaxDataAccess; public function fields(): array { return [ Select::make('select.') ->title('Select') ->multiple() ->options($this->getSelectOptions()) ->required(), ]; } protected function getSelectOptions() { return $this->getAjaxData()->get('select_options'); } }
之后,在主屏幕上,确定您想要传输的内容。在示例中,我们根据当前用户角色生成列表
Repeater::make('repeater') ->title('Repeater') ->layout(\App\Orchid\Layouts\RepeaterFields::class) ->ajaxData(function () { $data = [ 'select_options' => [ 'default' => 'Default option', ], ]; if (request()->user()->id === 1) { $data['select_options']['only_first'] = 'Option only for user with id #1'; } return $data; }),
您可以在重复字段中结合输出选项和向用户输出什么以及何时输出的内容。请注意,您的布局不知道当前屏幕上其他字段的当前状态,并且如果您想要传输有关当前字段的任何数据,您必须首先保存记录并使用主屏幕的数据和查询。
Repeater::make('repeater') ->title('Repeater') ->layout(\App\Orchid\Layouts\RepeaterFields::class) ->ajaxData([ 'select_options' => [ 'default' => $this->query()['name'] ?? 'Default Name', ], ]),