Url

Дата обновления перевода 2024-07-25

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, если вы всё равно хотите это проверить.

Note

As with most of the other constraints, null and empty strings are considered valid values. This is to allow them to be optional values. If the value is mandatory, a common solution is to combine this constraint with NotBlank.

Опции

groups

type: array | string default: null

It defines the validation group or groups of this constraint. Read more about validation groups.

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;
}

normalizer

type: a PHP callable default: null

This option allows to define the PHP callable applied to the given value before checking if it is valid.

For example, you may want to pass the 'trim' string to apply the trim PHP function in order to ignore leading and trailing whitespace during validation.

Дата обновления перевода 2024-07-25

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.

По умолчанию 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;
}