/** * {@inheritdoc} */ public function validate($value, Constraint $constraint) { if (isset($value)) { try { /** @var \Drupal\Core\Url $url */ $url = $value->getUrl(); } catch (\InvalidArgumentException $e) { return; } // Disallow external URLs using untrusted protocols. if ($url->isExternal() && !in_array(parse_url($url->getUri(), PHP_URL_SCHEME), UrlHelper::getAllowedProtocols())) { $this->context->addViolation($constraint->message, array('@uri' => $value->uri)); } } }