You are here

class ConfirmFormHelper in Drupal 9

Same name and namespace in other branches
  1. 8 core/lib/Drupal/Core/Form/ConfirmFormHelper.php \Drupal\Core\Form\ConfirmFormHelper
  2. 10 core/lib/Drupal/Core/Form/ConfirmFormHelper.php \Drupal\Core\Form\ConfirmFormHelper

Provides common functionality to confirmation forms.

Hierarchy

Expanded class hierarchy of ConfirmFormHelper

3 files declare their use of ConfirmFormHelper
ConfirmFormHelperTest.php in core/tests/Drupal/Tests/Core/Form/ConfirmFormHelperTest.php
ContentEntityConfirmFormBase.php in core/lib/Drupal/Core/Entity/ContentEntityConfirmFormBase.php
EntityConfirmFormBase.php in core/lib/Drupal/Core/Entity/EntityConfirmFormBase.php

File

core/lib/Drupal/Core/Form/ConfirmFormHelper.php, line 12

Namespace

Drupal\Core\Form
View source
class ConfirmFormHelper {

  /**
   * Builds the cancel link for a confirmation form.
   *
   * @param \Drupal\Core\Form\ConfirmFormInterface $form
   *   The confirmation form.
   * @param \Symfony\Component\HttpFoundation\Request $request
   *   The current request.
   *
   * @return array
   *   The link render array for the cancel form.
   */
  public static function buildCancelLink(ConfirmFormInterface $form, Request $request) {

    // Prepare cancel link.
    $query = $request->query;
    $url = NULL;

    // If a destination is specified, that serves as the cancel link.
    if ($query
      ->has('destination')) {
      $options = UrlHelper::parse($query
        ->get('destination'));

      // @todo Revisit this in https://www.drupal.org/node/2418219.
      try {
        $url = Url::fromUserInput('/' . ltrim($options['path'], '/'), $options);
      } catch (\InvalidArgumentException $e) {

        // Suppress the exception and fall back to the form's cancel url.
      }
    }

    // Check for a route-based cancel link.
    if (!$url) {
      $url = $form
        ->getCancelUrl();
    }
    return [
      '#type' => 'link',
      '#title' => $form
        ->getCancelText(),
      '#attributes' => [
        'class' => [
          'button',
        ],
      ],
      '#url' => $url,
      '#cache' => [
        'contexts' => [
          'url.query_args:destination',
        ],
      ],
    ];
  }

}

Members

Namesort descending Modifiers Type Description Overrides
ConfirmFormHelper::buildCancelLink public static function Builds the cancel link for a confirmation form.