Skip to content

Container kits

Container kits live in src/Kits/Container/. They hold other kits; see the Nesting guide for how children are built.

ContainerKit

A container element (a <div>). Unlike most kits, it does not add its own ID to its children's #parents.

Class Drupal\formfactorykits\Kits\Container\ContainerKit (src/Kits/Container/ContainerKit.php)
Extends FormFactoryKit
Factory method $kits->container()
Form API #type container
Default ID container
Traits PrefixTrait, SuffixTrait, WrapTrait

Setters

Method From
setPrefix(array\|string\|null $value) PrefixTrait (trait)
setSuffix(array\|string\|null $value) SuffixTrait (trait)
wrap(?string $id = NULL) WrapTrait (trait)

Example

$kit = $kits->container('results')->wrap()->append($kits->markup('msg')->setMarkup('<p>Hi</p>'));

Generated render array ([$kit->getID() => $kit->getArray()])

[
  'results' => [
    '#type' => 'container',
    '#prefix' => '<div id="results-wrapper">',
    '#suffix' => '</div>',
    'msg' => [
      '#type' => 'markup',
      '#markup' => '<p>Hi</p>',
      '#group' => 'results',
    ],
  ],
]

DetailsKit

A collapsible details element.

Class Drupal\formfactorykits\Kits\Container\DetailsKit (src/Kits/Container/DetailsKit.php)
Extends FormFactoryKit
Factory method $kits->details()
Form API #type details
Default ID details
Traits TitleTrait

Setters

Method From
setOpen(bool $isOpen = TRUE) DetailsKit
setTitle(string $title) TitleTrait (trait)

Example

$kit = $kits->details('advanced')->setTitle('Advanced')->setOpen()->append($kits->checkbox('debug')->setTitle('Debug'));

Generated render array ([$kit->getID() => $kit->getArray()])

[
  'advanced' => [
    '#type' => 'details',
    '#title' => 'Advanced',
    '#open' => TRUE,
    'debug' => [
      '#parents' => ['advanced'],
      '#type' => 'checkbox',
      '#title' => 'Debug',
      '#group' => 'advanced',
    ],
  ],
]

VerticalTabsKit

A vertical_tabs element. It groups its children: when the kit is appended to a FormFactory, its tabs are placed next to it (same level), each with #group pointing at it. getArray() on its own returns only the tabs element.

Class Drupal\formfactorykits\Kits\Container\Tabs\VerticalTabsKit (src/Kits/Container/Tabs/VerticalTabsKit.php)
Extends FormFactoryKit
Factory method $kits->verticalTabs()
Form API #type vertical_tabs
Default ID vertical_tabs
Traits none

Setters

Method From
createTab(string $id, array $context = []) VerticalTabsKit
setDefaultTab(string $tab) VerticalTabsKit

setDefaultTab('dogs') stores #default_tab => 'edit-dogs' (underscores become hyphens).

Example

$kit = $kits->verticalTabs()->setDefaultTab('dogs');

Generated render array ([$kit->getID() => $kit->getArray()])

[
  'vertical_tabs' => [
    '#parents' => ['vertical_tabs'],
    '#type' => 'vertical_tabs',
    '#default_tab' => 'edit-dogs',
  ],
]

TabKit

One tab of a VerticalTabsKit: a details element. Create it with VerticalTabsKit::createTab($id), which also appends it. A tab never writes #parents, and neither do its children.

Class Drupal\formfactorykits\Kits\Container\Tabs\TabKit (src/Kits/Container/Tabs/TabKit.php)
Extends DetailsKit
Factory method none; use $tabs->createTab($id)
Form API #type details
Default ID details
Traits TitleTrait

Setters

Method From
setOpen(bool $isOpen = TRUE) DetailsKit
setTitle(string $title) TitleTrait (trait)

Example

$kit = $kits->verticalTabs()->createTab('dogs')->setTitle('Dogs')->append($kits->textArea('bio')->setTitle('Bio'));

Generated render array ([$kit->getID() => $kit->getArray()])

[
  'dogs' => [
    '#type' => 'details',
    '#title' => 'Dogs',
    'bio' => [
      '#type' => 'textarea',
      '#title' => 'Bio',
    ],
  ],
]

TableKit

A table element built from header columns and rows of cells.

Class Drupal\formfactorykits\Kits\Container\Table\TableKit (src/Kits/Container/Table/TableKit.php)
Extends FormFactoryKit
Factory method $kits->table()
Form API #type table
Default ID table
Traits StickyTrait

Setters

Method From
appendHeaderColumn(string $title) TableKit
appendRow(Drupal\formfactorykits\Kits\Container\Table\TableRowKit\|array $row = []) TableKit
createRow(array $row = []) TableKit
setCaption(string $caption) TableKit
setHeader(array $columns) TableKit
setRows(array $rows = []) TableKit
setSticky() StickyTrait (trait)

Example

$kit = $kits->table('people')->setCaption('People')->appendHeaderColumn('Name')->appendHeaderColumn('Role')->appendRow(['Ada', 'Admin'])->setSticky();

Generated render array ([$kit->getID() => $kit->getArray()])

[
  'people' => [
    '#type' => 'table',
    '#caption' => 'People',
    '#header' => ['Name', 'Role'],
    '#sticky' => TRUE,
    '#rows' => [
      ['Ada', 'Admin'],
    ],
  ],
]

TableRowKit

One row of a TableKit. getArray() returns the row value as is (an array of cells), not a render element. TableKit::appendRow() and setRows() wrap plain arrays in this kit for you.

Class Drupal\formfactorykits\Kits\Container\Table\TableRowKit (src/Kits/Container/Table/TableRowKit.php)
Extends FormFactoryKit
Factory method $kits->tableRow()
Form API #type none (returns the row)
Default ID none (pass one)
Traits none

Setters

Method From
setRow(array\|string $row) TableRowKit

Example

$kit = $kits->tableRow('row')->setRow(['Ada', 'Admin']);

Generated render array ([$kit->getID() => $kit->getArray()])

[
  'row' => ['Ada', 'Admin'],
]