5 use Drupal\Core\Entity\EntityForm;
6 use Drupal\Core\Form\FormStateInterface;
9 * Form controller for the role entity edit forms.
11 class RoleForm extends EntityForm {
16 public function form(array $form, FormStateInterface $form_state) {
17 $entity = $this->entity;
19 '#type' => 'textfield',
20 '#title' => $this->t('Role name'),
21 '#default_value' => $entity->label(),
25 '#description' => $this->t('The name for this role. Example: "Moderator", "Editorial board", "Site architect".'),
28 '#type' => 'machine_name',
29 '#default_value' => $entity->id(),
31 '#disabled' => !$entity->isNew(),
35 'exists' => ['\Drupal\user\Entity\Role', 'load'],
40 '#value' => $entity->getWeight(),
43 return parent::form($form, $form_state, $entity);
49 public function save(array $form, FormStateInterface $form_state) {
50 $entity = $this->entity;
52 // Prevent leading and trailing spaces in role names.
53 $entity->set('label', trim($entity->label()));
54 $status = $entity->save();
56 $edit_link = $this->entity->link($this->t('Edit'));
57 if ($status == SAVED_UPDATED) {
58 drupal_set_message($this->t('Role %label has been updated.', ['%label' => $entity->label()]));
59 $this->logger('user')->notice('Role %label has been updated.', ['%label' => $entity->label(), 'link' => $edit_link]);
62 drupal_set_message($this->t('Role %label has been added.', ['%label' => $entity->label()]));
63 $this->logger('user')->notice('Role %label has been added.', ['%label' => $entity->label(), 'link' => $edit_link]);
65 $form_state->setRedirect('entity.user_role.collection');