Blog P1ratRuleZZZ

Drupal 8: Wie zu Charge Form umleiten nach, um benutzerdefinierte URL einreichen (Batch api)

Ich habe für eine lange Zeit mit diesem Kampf, aber dann fand ich einfache Lösung.

Ich brauchte, um neue Batch-Verarbeitung Seite umleiten direkt nach dem Button einreichen, so ist hier eine Lösung

public function submitForm(array &$form, FormStateInterface $form_state) {
    $form_state->setRedirectUrl(Url::fromUri())
    $identity = isset($form_state->getTriggeringElement()['#identity']) ? $form_state->getTriggeringElement()['#identity'] : 'unknown';
    switch ($identity) {
      case static::BTN_UPDATE;
        $batch = [
          'title' => t('Updating'),
          'operations' => [
            array('sfo_common_batch_callbacks__taxonomy_update_cache_process', [[]]),
          ],
          'finished' => 'sfo_common_batch_callbacks__taxonomy_update_cache_finished',
          'file' => drupal_get_path('module', 'sfo_common') . '/include/batch/sfo_common.taxonomy_cache.inc',
        ];

        batch_set($batch);
        $request =  batch_process(static::URL_REDIRECT);
        return $request->send();
        break;
      default:
        drupal_set_message(t('Incorrect operation'));
        break;
    }
  }

Dies ist die usecase ich gefunden. Das ist aber funktioniert nur gut für die Chargen. Wenn Sie nach der Form umleiten müssen einreichen es auch möglich, zu verwenden

public function submitForm(array &$form, FormStateInterface $form_state) {
  $form_state->setRedirect(taxonomy.vocabulary.collection); // Here need to pass route name from *.routes.yml file

  //But if you need to redirect to custom url
  $form_state->setRedirectUrl(Url::fromUri('http://google.com')); // Need to pass Drupal\Core\Url object here
}

Andere Wege umleiten https://www.drupal.org/node/2023537

Exit mobile version