ConfirmFormHelper::buildCancelLink

public static ConfirmFormHelper::buildCancelLink(ConfirmFormInterface $form, Request $request)

Builds the cancel link for a confirmation form.

Parameters

\Drupal\Core\Form\ConfirmFormInterface $form: The confirmation form.

\Symfony\Component\HttpFoundation\Request $request: The current request.

Return value

array The link render array for the cancel form.

File

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

Class

ConfirmFormHelper
Provides common functionality to confirmation forms.

Namespace

Drupal\Core\Form

Code

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',
      ],
    ],
  ];
}
doc_Drupal
2016-10-29 08:55:32
Comments
Leave a Comment

Please login to continue.