public function LocalTaskItemForm::save

File

translators/tmgmt_local/src/Form/LocalTaskItemForm.php, line 305

Class

LocalTaskItemForm
Form controller for the localTaskItem edit forms.

Namespace

Drupal\tmgmt_local\Form

Code

public function save(array $form, FormStateInterface $form_state) {
  parent::save($form, $form_state);

  /** @var LocalTaskItem $task_item */
  $task_item = $this->entity;
  $form_state
    ->cleanValues();
  foreach ($form_state
    ->getValues() as $key => $value) {
    if (is_array($value) && isset($value['translation'])) {

      // Update the translation, this will only update the translation in case
      // it has changed. We have two different cases, the first is for nested
      // texts.
      if (is_array($value['translation'])) {
        $update['#translation']['#text'] = $value['translation']['value'];
      }
      else {
        $update['#translation']['#text'] = $value['translation'];
      }
      $task_item
        ->updateData($key, $update);
    }
  }
  $task_item
    ->save();
  if ($form_state
    ->getTriggeringElement()['#value'] == $form['actions']['save']['#value']) {
    $this
      ->messenger()
      ->addStatus(t('The translation for <a href=:task_item>@task_item_title</a> has been saved.', [
      ':task_item' => $task_item
        ->toUrl()
        ->toString(),
      '@task_item_title' => $task_item
        ->label(),
    ]));
  }
  $task = $task_item
    ->getTask();
  $uri = $task
    ->toUrl();
  $form_state
    ->setRedirect($uri
    ->getRouteName(), $uri
    ->getRouteParameters());
}