SU-SWS/stanford_fields

View on GitHub
src/Plugin/Validation/Constraint/RelativeLinkFieldItemConstraintValidator.php

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
<?php
 
namespace Drupal\stanford_fields\Plugin\Validation\Constraint;
 
use Drupal\Core\DependencyInjection\ContainerInjectionInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\ConstraintValidator;
 
/**
* Validates the Menu link item constraint.
*/
class RelativeLinkFieldItemConstraintValidator extends ConstraintValidator implements ContainerInjectionInterface {
 
/**
* Current request.
*
* @var \Drupal\path_alias\AliasManagerInterface
*/
protected $request;
 
/**
Doc comment short description must start with a capital letter
Doc comment short description must end with a full stop
* {@inheritDoc}
*/
public static function create(ContainerInterface $container) {
return new static($container->get('request_stack'));
}
 
/**
* Validation constructor.
*
* @param \Symfony\Component\HttpFoundation\RequestStack $request_stack
* Current request stack.
*/
public function __construct(RequestStack $request_stack) {
$this->request = $request_stack->getCurrentRequest();
}
 
/**
* {@inheritdoc}
*/
public function validate($value, Constraint $constraint) {
/** @var \Drupal\Core\Field\FieldItemListInterface $value */
`syntax error, unexpected '->' (T_OBJECT_OPERATOR)`
Expected 1 space after "?"; 0 found
Expected 1 space before "?"; 0 found
$link_uri = $value->get(0)?->get('uri')?->getString();
if ($link_uri && str_contains($link_uri, $this->request->getSchemeAndHttpHost())) {
$this->context->addViolation($constraint->absoluteLink);
}
}
 
}