devel_wizard-2.x-dev/templates/spell/entity_type/config/add_form.php.twig
templates/spell/entity_type/config/add_form.php.twig
{% set parentClassName = 'BundleEntityFormBase' %}
{% if goal == 'config' %}
{%- set parentClassName = 'EntityForm' %}
{% endif %}
{% set parentClassFqn = 'Drupal\\Core\\Entity\\' ~ parentClassName %}
{%
include '@devel_wizard/php/devel_wizard.php.file.header.php.twig'
with {
'namespace': config.namespace,
}
%}
use {{ config.class_fqn ~}};
use {{ parentClassFqn }};
use Drupal\Core\Entity\EntityTypeInterface;
use Drupal\Core\Form\FormStateInterface;
class AddForm extends {{ parentClassName }} {
/**
* The entity being used by this form.
*
* @var \{{ config.interface_fqn }}
*/
protected $entity;
/**
* {@inheritdoc}
*/
public function form(array $form, FormStateInterface $form_state) {
$form = parent::form($form, $form_state);
$keys = $this->entity->getEntityType()->getKeys();
$form[$keys['label']] = [
'#type' => 'textfield',
'#title' => $this->t('Label'),
'#default_value' => $this->entity->label(),
'#description' => $this->t(
'The human-readable name of this %entityType.label. This name must be unique.',
[
'%entityType.label' => $this->entity->getEntityType()->getLabel(),
],
),
'#required' => TRUE,
'#size' => 30,
];
$form[$keys['id']] = [
'#type' => 'machine_name',
'#title' => $this->t('Machine-readable name'),
'#default_value' => $this->entity->id(),
'#maxlength' => EntityTypeInterface::BUNDLE_MAX_LENGTH,
'#disabled' => !$this->entity->isNew(),
'#machine_name' => [
'exists' => [{{ config.class }}::class, 'load'],
'source' => [$keys['label']],
],
'#description' => $this->t(
'A unique machine-readable name for this %entityType.label. It must only contain lowercase letters, numbers, and underscores.',
[
'%entityType.label' => $this->entity->getEntityType()->getLabel(),
],
),
];
{# @todo Different description based on "goal". #}
$form['description'] = [
'#title' => $this->t('Description'),
'#type' => 'textarea',
'#default_value' => $this->entity->get('description'),
'#description' => $this->t(
'This text will be displayed on the <em>Add new %entityType.label</em> page.',
[
'%entityType.label' => $this->entity->getEntityType()->getLabel(),
],
),
];
{# @todo Different description based on "goal". #}
$form['help'] = [
'#title' => $this->t('Help'),
'#type' => 'textarea',
'#default_value' => $this->entity->get('help'),
'#description' => $this->t(
'This text will be displayed on the <em>Add new %entityType.label</em> page.',
[
'%entityType.label' => $this->entity->getEntityType()->getLabel(),
],
),
];
$form['weight'] = [
'#type' => 'number',
'#required' => TRUE,
'#title' => $this->t('Weight'),
'#default_value' => $this->entity->get('weight') ?: 0,
'#min' => -100,
'#max' => 100,
'#step' => 1,
];
return $form;
}
/**
* {@inheritdoc}
*/
public function save(array $form, FormStateInterface $form_state) {
$save_result = parent::save($form, $form_state);
$this->saveSetMessage();
$route_name = 'entity.' . $this->entity->getEntityTypeId() . '.collection';
$form_state->setRedirect($route_name);
return $save_result;
}
/**
* Place a status message after save.
*/
protected function saveSetMessage() {
$args = [
'%label' => $this->entity->label(),
'@type' => $this->entity->getEntityType()->getLabel(),
];
$messenger = $this->messenger();
switch ($this->getOperation()) {
case 'add':
$messenger->addStatus($this->t('"%label" @type has been created', $args));
break;
case 'edit':
$messenger->addStatus($this->t('"%label" @type has been updated', $args));
break;
}
}
}
