Правило Hostname
Правило Hostname относится к группе
ограничений валидации и применяется к полям
формы, которые должны содержать корректное
имя хоста. Первым параметром передаётся
сообщение об ошибке, которое будет показано
пользователю при неудачной валидации.
Правило проверяет, что строка соответствует формату доменного имени: содержит допустимые символы, корректные метки, разделённые точками, и не превышает допустимую длину.
Синтаксис
new Hostname(message: 'error message')
Пример
Давайте создадим форму с полем host и
повесим на него правило Hostname:
<?php
namespace AppForm;
use SymfonyComponentFormAbstractType;
use SymfonyComponentFormExtensionCoreTypeTextType;
use SymfonyComponentFormFormBuilderInterface;
use SymfonyComponentOptionsResolverOptionsResolver;
use SymfonyComponentValidatorConstraintsHostname;
class ArticleType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder->add('host', TextType::class, [
'constraints' => [
new Hostname(
message: 'Invalid hostname',
),
],
]);
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'data_class' => null,
]);
}
}
?>
Пример
Давайте создадим контроллер, который принимает
значение поля host и проверяет его
валидность:
<?php
namespace AppController;
use AppFormArticleType;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributeRoute;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(Request $request): Response
{
$form = $this->createForm(ArticleType::class);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$data = $form->getData();
return new Response('valid hostname: ' . $data['host']);
}
return $this->render('article/index.html.twig', [
'form' => $form->createView(),
]);
}
}
?>
Пример
Давайте создадим Twig-шаблон для вывода формы:
{{ form_start(form) }}
{{ form_row(form.host) }}
<button type="submit">Send</button>
{{ form_end(form) }}
При отправке формы с корректным именем хоста,
например 'example.com', результат
выполнения кода:
"valid hostname: example.com"
При отправке формы с некорректным именем хоста,
например '-invalid-', форма не пройдёт
валидацию и пользователь увидит сообщение
'Invalid hostname'.