Url

Дата обновления перевода 2025-02-05

Url

Валидирует, что значение является валидной URL строкой.

??????????? ? ???????? ??? ??????
????? Url
????????? UrlValidator

Базовое применение

1
2
3
4
5
6
7
8
9
10
// src/Entity/Author.php
namespace App\Entity;

use Symfony\Component\Validator\Constraints as Assert;

class Author
{
    #[Assert\Url]
    protected string $bioUrl;
}

Это ограничение не проверяет, действительно ли существует хост заданного URL, так как информация записей DNS не надёжная. Ипользуйте PHP-функцию checkdnsrr, если вы всё равно хотите это проверить.

Дата обновления перевода 2025-02-21

Note

Как и в большинстве других ограничений, null и пустые строки считаются валидными значениями. Это для того, чтобы позволить им быть опциональными значениями. Если значение является обязательным, распространенным решением будет комбинация этого ограничения с NotBlank.

Опции

Дата обновления перевода 2023-09-24

groups

тип: array | string по умолчанию: null

Определяет группу или группы валидации ограничений. Прочитайте больше о группах валидации.

message

тип: string по умолчанию: Это значение не является валидным URL.

Это сообщение отображается, если URL не валиден.

Вы можете использовать следующие параметры в этом сообщении:

???????? ????????
{{ value }} ??????? (??????????) ????????
{{ label }} ??????????????? ????? ???? ?????
1
2
3
4
5
6
7
8
9
10
11
12
// src/Entity/Author.php
namespace App\Entity;

use Symfony\Component\Validator\Constraints as Assert;

class Author
{
    #[Assert\Url(
        message: 'The url {{ value }} is not a valid url',
    )]
    protected string $bioUrl;
}

Дата обновления перевода 2025-02-21

normalizer

тип: PHP-вызываемое по умолчанию: null

Эта опция позволяет вам определять PHP-вызываемое, примененное к заданному значению до проверки, является ли оно валидным.

Например, вы можете захотеть передать строку 'trim' для применения PHP-функции trim, чтобы игнорировать начальные и замыкающие пробелы во время валидации.

Дата обновления перевода 2025-02-05

payload

тип: mixed по умолчанию: null

Эта опция может быть использована, чтобы добавить к ограничению произвольные данные, относящиеся к домену. Сконфигурированная нагрузка не используется компонентом Валидатор, но его обработка полностью зависит от вас.

Например, вы можете захотеть исользовать несколько уровней ошибок, чтобы представить неудачные ограничения в фронт-энде по-разному, в зависимости от степени сложности ошибки.

protocols

тип: array по умолчанию: array('http', 'https')

Протоколы считаются валидными для URL. Например, если вы также считаете валидными URL типа ftp://, переопределите массив protocols, включив в него http, https, а также ftp.

1
2
3
4
5
6
7
8
9
10
11
12
// src/Entity/Author.php
namespace App\Entity;

use Symfony\Component\Validator\Constraints as Assert;

class Author
{
    #[Assert\Url(
        protocols: ['http', 'https', 'ftp'],
    )]
    protected string $bioUrl;
}

relativeProtocol

тип: boolean по умолчанию: false

Если true, то протокол считается необязательным при валидации синтаксиса заданного URL. Это означает, что как http://, так и https:// валидны, а также относительный URL, которые не содержат протокола (например, //example.com).

1
2
3
4
5
6
7
8
9
10
11
12
// src/Entity/Author.php
namespace App\Entity;

use Symfony\Component\Validator\Constraints as Assert;

class Author
{
    #[Assert\Url(
        relativeProtocol: true,
    )]
    protected string $bioUrl;
}

requireTld

тип: boolean по умолчанию: false

7.1

Опция requiredTld была представлена в Symfony 7.1.

7.1

Отказ от установки опции requireTld устарел, начиная с Symfony 7.1,
и по умолчанию будет иметь значение true в Symfony 8.0.

По умолчанию URL-адреса типа https://aaa или https://foobar считаются валидными, поскольку они технически корректны в соответствии с URL spec. Если вы установите эту опцию как true, то хост-часть URL должна содержать TLD (доменное имя верхнего уровня). например, https://example.com будет валидным, а https://example - нет.

Note

Это ограничение не валидирует, что данное значение TLD включено в список официальных доменов верхнего уровня (потому что этот список постоянно растет, и за ним трудно уследить).

tldMessage

тип: string по умолчанию: Этот URL не содержит TLD.

7.1

Опция tldMessage была представлена в Symfony 7.1.

Это сообщение отображается, если для опции requireTld установлено значение true и URL не содержит хотя бы одного TLD.

В этом сообщении можно использовать следующие параметры:

???????? ????????
{{ value }} ??????? (??????????) ????????
{{ label }} ??????????????? ????? ???? ?????
1
2
3
4
5
6
7
8
9
10
11
12
13
// src/Entity/Website.php
namespace App\Entity;

use Symfony\Component\Validator\Constraints as Assert;

class Website
{
    #[Assert\Url(
        requireTld: true,
        tldMessage: 'Add at least one TLD to the {{ value }} URL.',
    )]
    protected string $homepageUrl;
}