public function RestrictionPluginConfigForm::buildForm in Layout Builder Restrictions 8.2
Form constructor.
Parameters
array $form: An associative array containing the structure of the form.
\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.
Return value
array The form structure.
Overrides FormInterface::buildForm
File
- src/
Form/ RestrictionPluginConfigForm.php, line 60
Class
- RestrictionPluginConfigForm
- Class RestrictionPluginConfigForm.
Namespace
Drupal\layout_builder_restrictions\FormCode
public function buildForm(array $form, FormStateInterface $form_state) {
$plugin_list = $this->pluginManagerLayoutBuilderRestriction
->getSortedPlugins(TRUE);
$form['plugin-table'] = [
'#type' => 'table',
'#header' => [
$this
->t('Plugin'),
$this
->t('ID'),
$this
->t('Enabled'),
$this
->t('Weight'),
],
'#empty' => $this
->t('There are no restriction plugins defined.'),
// TableDrag: Each array value is a list of callback arguments for
// drupal_add_tabledrag().
'#tabledrag' => [
[
'action' => 'order',
'relationship' => 'sibling',
'group' => 'plugin-table-order-weight',
],
],
'#prefix' => '<p>Set the order the Layout Builder Restriction plugins should be called, and enable or disable as needed.</p>',
];
// Build the table rows and columns.
// The first nested level in the render array forms the table row,
// on which you likely want to set #attributes and #weight.
foreach ($plugin_list as $id => $data) {
// TableDrag: Mark the table row as draggable.
$form['plugin-table'][$id]['#attributes']['class'][] = 'draggable';
// Sort the row according to its existing/configured weight.
$form['plugin-table'][$id]['#weight'] = $data['weight'];
if ($data['description']) {
$form['plugin-table'][$id]['title'] = [
'#markup' => '<strong>' . $data['title'] . '</strong><br>' . $data['description'],
];
}
else {
$form['plugin-table'][$id]['title'] = [
'#markup' => '<strong>' . $data['title'] . '</strong>',
];
}
$form['plugin-table'][$id]['id'] = [
'#plain_text' => $id,
];
$form['plugin-table'][$id]['enabled'] = [
'#type' => 'checkbox',
'#title' => $this
->t('Enabled'),
'#title_display' => 'invisible',
'#default_value' => $data['enabled'],
// Classify the weight element for #tabledrag.
'#attributes' => [
'class' => [
'plugin-table-enabled',
],
],
];
// TableDrag: Weight column element.
$form['plugin-table'][$id]['weight'] = [
'#type' => 'weight',
'#title' => $this
->t('Weight for @title', [
'@title' => $id,
]),
'#title_display' => 'invisible',
'#default_value' => $data['weight'],
// Classify the weight element for #tabledrag.
'#attributes' => [
'class' => [
'plugin-table-order-weight',
],
],
];
}
$form['submit'] = [
'#type' => 'submit',
'#value' => $this
->t('Save configuration'),
];
return $form;
}