nakukryskin/orchid-repeater-field

Adding support of repeater field to the Orchid RAD platform

3.0.1 2020-08-04 11:32 UTC

README

Orchid Platform Repeater Field

Brief

This package adding repeater fields support to Orchid RAD platform.

Pre-requirements

You must have installed and configured Orchid Platform

Version Support: .*

For 6.* version use 2.0.5 tag

For 5 version use 1.0.0 tag.

For 4.7.1 version use 0.0.8 tag.

How to use

  1. Install package with composer: composer require nakukryskin/orchid-repeater-field

    Latest version of laravel automatically discover package to use.

  2. Create RepeaterFields.php in your Orchid Layouts directory. Example:

    <?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
    {
    
        /**
         * Return array of the fields
         *
         * @return array
         */
        function fields(): array
        {
            return [
                Input::make('repeater_name')
                    ->type('text')
                    ->max(255)
                    ->required()
                    ->title('Nested Field'),
                //Multiple fields must ends with the dot 
                Select::make('select.')
                             ->multiple()
                             ->options([
                                 'test' => 'Test',
                                 'test2' => 'Test2'
                             ])
                             ->required()
            ];
        }
    }
  3. Simply start adding the RepeaterField::make('repeater') in your screen: Example:

        public function layout(): array
        {
            return [
                Layout::rows([
                    RepeaterField::make('repeater')
                        ->title('Repeater')
                        ->layout(App\Http\Orchid\Layouts\Repeaters\RepeaterFields::class),
                ])
            ];
        }
  4. Open your screen and check that the repeater fields here

Advanced usage

Repeater field also support required, max and min parameters. You can add these parameters with call the RepeaterField.

RepeaterField::make('repeater')
    ->title('Repeater')
    ->layout(App\Http\Orchid\Layouts\Repeaters\RepeaterFields::class)
    ->required()
    ->min(10)
    ->max(20)

If required() passed to the constructor min() automatically will set to 1. If user will try delete this field it will be prevented and show the message.

To show required message on save you must add this rule to your screen rules, eg. 'content.*.repeater' => 'required'

You also can rename button label with your own with method button_label(). eg.

RepeaterField::make('repeater')
    ->title('Repeater')
    ->layout(App\Http\Orchid\Layouts\Repeaters\RepeaterFields::class)
    ->button_label('Add new repeater field')