Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

Problema al querer traducir una entidad en un formulario de SF2.8

3 de marzo de 2017

Estoy programando toda la APP en Ingles y haciendo las traducciones correspondiente, por ahora solo al español y luego generaré las traducciones para los otros idiomas. El problema que tengo es el siguiente:

Tengo una entidad llamada Person, con varios atributos ente ellos el atributo Sexo (Sex) que es una clave foránea de la entidad Sex. Los distintos objetos que posee la entidad Sex están cagados en Ingles (Male, Female) y quiero que el formulario que me da la opción de elegir el sexo me haga la traducción al idioma que corresponda (por el momento en español; Masculino, Femenino).

Las traducciones ya están cargadas y en otros lugares de la aplicación (que no sea un formulario) andan bien. Este el código:

Entity Person:

...
 
    /**
     *
     * @ORM\ManyToOne(targetEntity="MSG\PersonBundle\Entity\Sex")
     * @ORM\JoinColumn(name="sex_id", referencedColumnName="id")
     * @Assert\Type("MSG\PersonBundle\Entity\Sex")
     * @Assert\NotNull()
     */
    private $sex;
 
     ...

PersonType (Así no me traduce el select de la entidad):

...
 
     ->add('sex', 'entity', array(
         'class' => 'PersonBundle:Sex',
             'query_builder' => function($er) {
                  return $er->createQueryBuilder('s')
                      ->where('s.status = 2 or s.status = 3')
                      ->orderBy('s.id', 'ASC');
              })
     )
 
     ...

Lo curioso es que si no uso una entidad y cargo el valor del atributo en la Entidad Persona la traducción si funciona.

PersonType (así si funciona):

...
 
     ->add('sex', 'choice', array(
         'choices' => array(
             'Male' => 'Male',
             'Female' => 'Female'
         ),
     ))
 
     ...

¿Se pueden traducir los valores de los atributo de una entidad en un formulario? ¿Cómo lo hago?

Desde ya muchas gracias.


Respuestas

#1

No soy muy experto en los formularios de Symfony, pero creo que tienes que utilizar la opción choice_translation_domain a true:

->add('sex', 'entity', array(
    'choice_translation_domain' => true,
    'class' => 'PersonBundle:Sex',
    'query_builder' => function($er) {
        // ...
      })
 )

Lo vi en este comentario del repositorio de Symfony.

@javiereguiluz

5 marzo 2017, 12:08
#2

Muchas gracias Javier!, funcionó a la perfección.

@gapiazza

11 marzo 2017, 18:07