我有这个表格:
<?php
declare(strict_types=1);
namespace App\Form;
use App\Security\Validator\Constraints\PhoneValidator;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Validator\Constraints\Email;
use Symfony\Component\Validator\Constraints\NotBlank;
class JobApplicationType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('email',options:[
'label'=>'form.label.email',
'constraints'=> [
new Email(message: 'form.error.email')
]
]);
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'translation_domain'=>'job-application'
]);
}
}
这些翻译:
form:
label:
email: 'E-Mail'
error:
email: 'Invalid E-Mail'
标签forms.label.email将被正确翻译。当我将标签更改为forms.error.email时,它也被正确翻译。但无论我提供新电子邮件(message:'form.error.email')还是新电子邮件('message '='form.error.email']),约束消息都不会被翻译。
我使用Symfony 6.2.7
我做错了什么?
更新:使用翻译器接口:
$this->translator->trans('form.label.email',domain: 'job-application')
工作,但这似乎有点复杂,我
1条答案
按热度按时间oyxsuwqo1#
你可以在约束验证消息中使用翻译键,但是你需要把你的翻译放在validators.en.yaml中,因为域必须是验证器。我想你只是把messages. en. yaml放在里面。
顺便说一句,Symfony验证器消息不会自动提取。
希望对你有帮助!