5 use Drupal\Core\Entity\EntityForm;
6 use Drupal\Core\Form\FormStateInterface;
9 * Form controller for the role entity edit forms.
13 class RoleForm extends EntityForm {
18 public function form(array $form, FormStateInterface $form_state) {
19 $entity = $this->entity;
21 '#type' => 'textfield',
22 '#title' => $this->t('Role name'),
23 '#default_value' => $entity->label(),
27 '#description' => $this->t('The name for this role. Example: "Moderator", "Editorial board", "Site architect".'),
30 '#type' => 'machine_name',
31 '#default_value' => $entity->id(),
33 '#disabled' => !$entity->isNew(),
37 'exists' => ['\Drupal\user\Entity\Role', 'load'],
42 '#value' => $entity->getWeight(),
45 return parent::form($form, $form_state, $entity);
51 public function save(array $form, FormStateInterface $form_state) {
52 $entity = $this->entity;
54 // Prevent leading and trailing spaces in role names.
55 $entity->set('label', trim($entity->label()));
56 $status = $entity->save();
58 $edit_link = $this->entity->link($this->t('Edit'));
59 if ($status == SAVED_UPDATED) {
60 drupal_set_message($this->t('Role %label has been updated.', ['%label' => $entity->label()]));
61 $this->logger('user')->notice('Role %label has been updated.', ['%label' => $entity->label(), 'link' => $edit_link]);
64 drupal_set_message($this->t('Role %label has been added.', ['%label' => $entity->label()]));
65 $this->logger('user')->notice('Role %label has been added.', ['%label' => $entity->label(), 'link' => $edit_link]);
67 $form_state->setRedirect('entity.user_role.collection');