我有现在的情况
<?php
namespace MyBundle\Form\Type;
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Validator\Constraints as Assert;
class MyFormType extends AbstractType implements ContainerAwareInterface
{
use \Symfony\Component\DependencyInjection\ContainerAwareTrait;
public function buildForm(FormBuilderInterface $builder, array $options)
{
$translator = $this->container->get('translator');
$builder->add('my-field', 'text', [
'constraints' => [
new Assert\NotBlank([
'message' => $translator->trans('%field% should not be blank.', ['%field%' => $translator->trans('MyFieldName')]),
]),
],
]);
}
public function getName()
{
return 'my_form';
}
}
这个例子已经有效,我正在尝试重构它,所以我不必在其中包含容器(或翻译器)。
挑战在于保持
- '%field% 不应为空。' 和
- '我的字段名'
作为仅有的两个可翻译字符串,'因为 MyFieldName 很可能已经被翻译(如标签),留下 '%field% 不应为空。作为适用于站点中任何字段的通用消息。