Правило Url
Правило Url относится к ограничениям валидации Symfony
и вешается на свойство сущности или на поле формы.
Оно проверяет, что переданное значение является допустимым
URL-адресом. Первым параметром можно передать сообщение
об ошибке, которое будет показано пользователю при
неудачной валидации.
Синтаксис
#[Url(message: 'error message')]
Пример
Давайте повесим правило Url на свойство site сущности:
<?php
namespace App\Entity;
use Symfony\Component\Validator\Constraints as Assert;
class Article
{
#[Assert\Url(message: 'Invalid URL')]
private string $site = '';
public function getSite(): string
{
return $this->site;
}
public function setSite(string $site): void
{
$this->site = $site;
}
}
?>
Пример
Давайте проверим значение 'https://code.mu' с помощью валидатора:
<?php
namespace App\Controller;
use App\Entity\Article;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\Validator\Validator\ValidatorInterface;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(ValidatorInterface $validator): Response
{
$article = new Article();
$article->setSite('https://code.mu');
$errors = $validator->validate($article);
if (count($errors) > 0) {
return new Response((string) $errors);
}
return new Response('valid');
}
}
?>
Результат выполнения кода:
"valid"
Пример
Давайте проверим некорректное значение 'abcde':
<?php
namespace App\Controller;
use App\Entity\Article;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\Validator\Validator\ValidatorInterface;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(ValidatorInterface $validator): Response
{
$article = new Article();
$article->setSite('abcde');
$errors = $validator->validate($article);
if (count($errors) > 0) {
return new Response((string) $errors);
}
return new Response('valid');
}
}
?>
Результат выполнения кода:
"Invalid URL"