Правило Language
Правило Language относится к секции form
и проверяет, что переданное значение является
допустимым кодом языка. Обычно применяется к полям
формы, в которых пользователь указывает язык,
например, в настройках профиля или при создании
многоязычного контента. Правило принимает значение
языка в формате ISO 639-1, например 'en',
'ru' или 'de'.
Синтаксис
#[Language]
Пример
Давайте создадим форму с полем language
и повесим на него правило Language:
<?php
namespace AppForm;
use SymfonyComponentFormAbstractType;
use SymfonyComponentFormFormBuilderInterface;
use SymfonyComponentOptionsResolverOptionsResolver;
use SymfonyComponentValidatorConstraintsLanguage;
class ArticleType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder->add('language', null, [
'constraints' => [
new Language(),
],
]);
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'data_class' => null,
]);
}
}
?>
Пример
Давайте отправим в форму корректный код языка
'en' и проверим валидность:
<?php
namespace AppController;
use AppFormArticleType;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentHttpFoundationResponse;
class ArticleController extends AbstractController
{
public function index(Request $request): Response
{
$form = $this->createForm(ArticleType::class);
$form->submit(['language' => 'en']);
if ($form->isValid()) {
return new Response('valid');
}
return new Response('invalid');
}
}
?>
Результат выполнения кода:
valid
Пример
Давайте отправим в форму некорректный код языка
'xx' и проверим валидность:
<?php
namespace AppController;
use AppFormArticleType;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentHttpFoundationResponse;
class ArticleController extends AbstractController
{
public function index(Request $request): Response
{
$form = $this->createForm(ArticleType::class);
$form->submit(['language' => 'xx']);
if ($form->isValid()) {
return new Response('valid');
}
return new Response('invalid');
}
}
?>
Результат выполнения кода:
invalid