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'],
]