Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
CRAP | |
90.91% |
10 / 11 |
| ConfirmFormHelper | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
4.01 | |
90.91% |
10 / 11 |
| buildCancelLink | |
0.00% |
0 / 1 |
4.01 | |
90.91% |
10 / 11 |
|||
| <?php | |
| /** | |
| * @file | |
| * Contains \Drupal\Core\Form\ConfirmFormHelper. | |
| */ | |
| namespace Drupal\Core\Form; | |
| use Drupal\Component\Utility\UrlHelper; | |
| use Drupal\Core\Url; | |
| use Symfony\Component\HttpFoundation\Request; | |
| /** | |
| * Provides common functionality to confirmation forms. | |
| */ | |
| 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', | |
| ], | |
| ], | |
| ]; | |
| } | |
| } |