public static PathElement::validateMatchedPath(&$element, FormStateInterface $form_state, &$complete_form)
Form element validation handler for matched_path elements.
Note that #maxlength is validated by _form_validate() already.
This checks that the submitted value matches an active route.
File
- core/lib/Drupal/Core/Render/Element/PathElement.php, line 61
Class
- PathElement
- Provides a matched path render element.
Namespace
Drupal\Core\Render\Element
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | public static function validateMatchedPath(& $element , FormStateInterface $form_state , & $complete_form ) { if (! empty ( $element [ '#value' ]) && ( $element [ '#validate_path' ] || $element [ '#convert_path' ] != self::CONVERT_NONE)) { /** @var \Drupal\Core\Url $url */ if ( $url = \Drupal::service( 'path.validator' )->getUrlIfValid( $element [ '#value' ])) { if ( $url ->isExternal()) { $form_state ->setError( $element , t( 'You cannot use an external URL, please enter a relative path.' )); return ; } if ( $element [ '#convert_path' ] == self::CONVERT_NONE) { // Url is valid, no conversion required. return ; } // We do the value conversion here whilst the Url object is in scope // after validation has occurred. if ( $element [ '#convert_path' ] == self::CONVERT_ROUTE) { $form_state ->setValueForElement( $element , array ( 'route_name' => $url ->getRouteName(), 'route_parameters' => $url ->getRouteParameters(), )); return ; } elseif ( $element [ '#convert_path' ] == self::CONVERT_URL) { $form_state ->setValueForElement( $element , $url ); return ; } } $form_state ->setError( $element , t( 'This path does not exist or you do not have permission to link to %path.' , array ( '%path' => $element [ '#value' ], ))); } } |
Please login to continue.