Вопрос по symfony – Symfony2: Как перевести пользовательские сообщения об ошибках в типы форм?

19

Мне нужно перевести сообщения об ошибках из моего типа формы. Вот моя форма Введите код:

<code>class ReferFriendType extends AbstractType {

public function buildForm(FormBuilder $builder, array $options)
{
    $defaultSubject = "This is a default referral subject.";
    $defaultMessage = "This is a default referral message.";

    $builder->add('email1', 'email',array(
        'required' => true,
        'label' => 'Email 1* :',
        'attr' => array('class' => 'large_text'),
    ));
    $builder->add('email2', 'email',array(
        'label' => 'Email 2 :',
        'required' => false,
        'attr' => array('class' => 'large_text'),
    ));
    $builder->add('email3', 'email',array(
        'label' => 'Email 3 :',
        'required' => false,
        'attr' => array('class' => 'large_text'),
    ));
    $builder->add('email4', 'email',array(
        'label' => 'Email 4 :',
        'required' => false,
        'attr' => array('class' => 'large_text'),
    ));
    $builder->add('email5', 'email',array(
        'label' => 'Email 5 :',
        'required' => false,
        'attr' => array('class' => 'large_text'),
    ));
    $builder->add('subject', 'text', array(
        'data' => $defaultSubject,
        'required' => true,
        'label' => 'Subject* :',
        'attr' => array('class' => 'large_text'),
    ));
    $builder->add('message', 'textarea', array(
        'data' => $defaultMessage,
        'required' => true,
        'label' => 'Message* :',
        'attr' => array('rows' => '5', 'cols' => '40'),
    ));

}

public function getDefaultOptions(array $options)
{
    $collectionConstraint = new Collection( array(
        'fields' => array(
            'email1' => array(
                new Email(),
                new NotBlank(array(
                    'message' => 'You must enter atleast one email address for a valid submission',
                )),
            ),
            'subject' => new NotBlank(),
            'message' => new NotBlank(),
        ),
        'allowExtraFields' => true,
        'allowMissingFields' => true,
    ));

    return array(
        'validation_constraint' => $collectionConstraint,
        'csrf_protection' => false,
    );
}

public function getName()
{
    return 'referFriend';
}
</code>

}

Я хочу перевести & apos; Вы должны ввести хотя бы один адрес электронной почты для действительного представления & apos; в методе getDefaultOptions () на французский. Я добавил перевод в messages.fr.yml. Но это не переводится. Есть идеи, как это можно сделать?

Ваш Ответ

4   ответа
1

http: //symfony.com/doc/current/book/translation.html#translating-constraint-message И установите default_locale в /app/config/config.yml или поиграйтесь с $ this-> get ('request') -> setLocale ('ru');

38

validators.LANG.yml файлы - неmessages.LANG.yml те.

Я пытался создать validators.LANG.yml и добавить переводы, но это не помогло. VishwaKumar
это работает с пользовательскими ключами перевода? На самом деле я пытаюсь сделать что-то вроде этого:'label' => $this->get('translator')->trans( 'create.label.startAt', array(), 'myDomain') svassr
@ svassr, каждое ограничение имеетmessage свойство, которое вы можете установить для любого пользовательского ключа, который вы хотите. Elnur Abdurrakhimov
Вы очистили кеш после добавления файла? Elnur Abdurrakhimov
Как это будет работать дляFormError который добавляется черезEventListener вFormType->buildForm()? Создание валидаторов. <Lang> .yml и добавление ошибки черезnew FormError('form.msg_filetype') не работает. В symfony, перевод сделан до создания FormError? Rvanlaak
2

Validators.en.yml

noFirstnameMinLimit: Please provide at least {{ limit }} characters

Validation.yml

Acm\AddressBundle\Entity\Address:
    properties:
        firstname:
            - Length:
                min: 3 
                minMessage: "noFirstnameMinLimit"

Это работает для меня с Symfony 2.4

есть ли список доступных заполнителей а-ля{{ limit }}, {{compared_value}}, {{value}} и так далее V-Light
Доступные заполнители обычно документируются на странице с описанием конкретного ограничения, например, Symfony.com / док / текущие / ссылки / ограничения / Length.html Список ограничений здесь Symfony.com / док / ток / ... SimonW
1
Это очень ясно, но в моем случае я добавляю проверки в свой тип формы. VishwaKumar

Похожие вопросы