<?php
/**
 * Example of repeater.
 */
papi_property( [
  'title'    => 'Repeater',
  'slug'     => 'my_repeater_slug',
  'type'     => 'repeater',
  'settings' => [
    'items' => [
      papi_property( [
        'type'  => 'string',
        'title' => 'Title',
        'slug'  => 'my_string_slug'
      ] ),
      papi_property( [
        'type'     => 'dropdown',
        'title'    => 'Color',
        'slug'     => 'my_dropdown_slug',
        'settings' => [
          'items' => [
            'White' => '#ffffff',
            'Black' => '#000000'
          ]
        ]
      ] )
    ]
  ]
] )
/**
 * Example output.
 */
array
(
  [0] => array
  (
    [my_string_slug] => 'Test 1'
    [my_dropdown_slug] => '#ffffff'
  )
  [1] => array
  (
    [my_string_slug] => 'Test 2'
    [my_dropdown_slug] => '#000000'
  )
)
Description
The repeater property can create a repeater of sub fields which can be repeated again and again. You can have repeater inside repeater since 3.1.0, but not flexible inside repeater.

Settings
| Key | Default | Description | 
|---|---|---|
| add_new_label | ‘Add new row’ | Add new label text. | 
| closed_rows | false | When this is true the existing rows will be closed when the page is loaded. | 
| items | array | The array of properties, the same key/values as papi_propertyfunction has. You can’t use repeater or flexible inside a repeater. | 
| layout | ‘table’ | Choose between tableorrow. | 
| limit | -1 (no limit) | Prevent how many post references that can be added. | 
Filters
<?php
/**
 * Example of `papi/property/repeater/exclude` filter.
 */
add_filter( 'papi/property/repeater/exclude', function ( $exclude ) {
  return array_merge( $exclude, [
    'string'
  ] );
} );
| Filter | Description | 
|---|---|
| papi/property/repeater/exclude | Prevent properties from render and working in repeater |