public function MessageTemplateForm::form in Message 8
Gets the actual form array to be built.
Overrides EntityForm::form
See also
\Drupal\Core\Entity\EntityForm::processForm()
\Drupal\Core\Entity\EntityForm::afterBuild()
File
- src/
Form/ MessageTemplateForm.php, line 55
Class
- MessageTemplateForm
- Form controller for node type forms.
Namespace
Drupal\message\FormCode
public function form(array $form, FormStateInterface $form_state) {
$form = parent::form($form, $form_state);
/** @var \Drupal\message\Entity\MessageTemplate $template */
$template = $this->entity;
$form['label'] = [
'#title' => $this
->t('Label'),
'#type' => 'textfield',
'#default_value' => $template
->label(),
'#description' => $this
->t('The human-readable name of this message template. This text will be displayed as part of the list on the <em>Add message</em> page. It is recommended that this name begin with a capital letter and contain only letters, numbers, and spaces. This name must be unique.'),
'#required' => TRUE,
'#size' => 30,
];
$form['template'] = [
'#type' => 'machine_name',
'#default_value' => $template
->id(),
'#maxlength' => EntityTypeInterface::BUNDLE_MAX_LENGTH,
'#disabled' => $template
->isLocked(),
'#machine_name' => [
'exists' => '\\Drupal\\message\\Entity\\MessageTemplate::load',
'source' => [
'label',
],
],
'#description' => $this
->t('A unique machine-readable name for this message template. It must only contain lowercase letters, numbers, and underscores. This name will be used for constructing the URL of the %message-add page, in which underscores will be converted into hyphens.', [
'%message-add' => $this
->t('Add message'),
]),
];
$form['description'] = [
'#title' => $this
->t('Description'),
'#type' => 'textfield',
'#default_value' => $this->entity
->getDescription(),
'#description' => $this
->t('The human-readable description of this message template.'),
];
$multiple = new MessageTemplateMultipleTextField($this->entity, [
get_class($this),
'addMoreAjax',
]);
$multiple
->textField($form, $form_state);
$settings = $this->entity
->getSettings();
$form['settings'] = [
// Placeholder for other module to add their settings, that should be
// added to the settings column.
'#tree' => TRUE,
];
$form['settings']['token options']['clear'] = [
'#title' => $this
->t('Clear empty tokens'),
'#type' => 'checkbox',
'#description' => $this
->t('When this option is selected, empty tokens will be removed from display.'),
'#default_value' => isset($settings['token options']['clear']) ? $settings['token options']['clear'] : FALSE,
];
$form['settings']['token options']['token replace'] = [
'#type' => 'checkbox',
'#title' => $this
->t('Token replace'),
'#description' => $this
->t('When this option is selected, token processing will happen.'),
'#default_value' => !isset($settings['token options']['token replace']) || !empty($settings['token options']['token replace']),
];
$form['settings']['purge_override'] = [
'#title' => $this
->t('Override global purge settings'),
'#type' => 'checkbox',
'#description' => $this
->t('Override <a href=":settings">global purge settings</a> for messages using this template.', [
':settings' => Url::fromRoute('message.settings')
->toString(),
]),
'#default_value' => $this->entity
->getSetting('purge_override'),
];
// Add the purge method settings form.
$settings = $this->entity
->getSetting('purge_methods', []);
$this->purgeManager
->purgeSettingsForm($form, $form_state, $settings);
return $form;
}