You are here

public function TourForm::tipAdd in Tour UI 8

Submit handler.

File

src/Form/TourForm.php, line 271

Class

TourForm
Form controller for the tour entity edit forms.

Namespace

Drupal\tour_ui\Form

Code

public function tipAdd($form, FormStateInterface $form_state) {
  $tour = $this
    ->getEntity($form_state);
  $this::submitForm($form, $form_state, FALSE);
  $weight = 0;
  if (!$form_state
    ->isValueEmpty('tips')) {

    // Get last weight.
    foreach ($form_state
      ->getValue('tips') as $tip) {
      if ($tip['weight'] > $weight) {
        $weight = $tip['weight'] + 1;
      }
    }
  }
  $stub = $this->tipPluginManager
    ->createInstance($form_state
    ->getValue('new'), []);

  // If a form is available for this tip then redirect to a add page.
  $stub_form = $stub
    ->buildConfigurationForm([], new FormState());
  if (isset($stub_form)) {

    // Redirect to the appropriate page to add this new tip.
    $form_state
      ->setRedirect('tour_ui.tip.add', [
      'tour' => $tour
        ->id(),
      'type' => $form_state
        ->getValue('new'),
    ], [
      'query' => [
        'weight' => $weight,
      ],
    ]);
  }
}