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