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