2012-05-01 24 views
16

Necesito traducir los mensajes de error de mi tipo de formulario. Aquí está mi código del formulario Tipo:Symfony2: ¿Cómo traducir mensajes de error personalizados en tipos de formulario?

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'; 
} 

}

Deseo traducir 'Debe ingresar al menos una dirección de correo electrónico válida para una presentación' método de getDefaultOptions() en francés. He agregado la traducción en el messages.fr.yml. Pero no está siendo traducido. ¿Alguna idea de cómo se puede hacer esto?

Respuesta

35

Las traducciones de validación van a los archivos validators.LANG.yml - no a messages.LANG.yml.

+0

intenté crear la validators.LANG.yml y la adición de las traducciones, pero no funciona – VishwaKumar

+6

¿Ha borrado la memoria caché después de agregar el archivo? –

+0

¡Malo! Funcionó. ¡Gracias! – VishwaKumar

1

Hay un ejemplo en el docs.

+0

Eso está muy claro, pero en mi caso estoy agregando las validaciones en mi tipo de formulario. – VishwaKumar

1

Los reemplazos no se establecen en el archivo validation.yml, sino en el Validator.

validators.en.yml

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

validation.yml

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

Esto funciona para mí con Symfony 2.4

+0

¿hay alguna lista de todos los marcadores de posición disponibles a la '{{limit}}', '{{compare_value}}', '{{value}}' y así sucesivamente? –

Cuestiones relacionadas