Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/09/2011, 18:44
MichaelParra
 
Fecha de Ingreso: enero-2009
Mensajes: 24
Antigüedad: 15 años, 10 meses
Puntos: 1
Doctrine 2 Symfony 2 Translatable

Instalé el Pack Doctrine Extensions.

Probé en columna subject la la traducción.

Código PHP:

namespace LmsPostBundleEntity
;

use 
DoctrineORMMapping as ORM;
use 
SymfonyComponentValidatorConstraints as Assert;
use 
DoctrineCommonCollectionsArrayCollection;
use 
SymfonyComponentValidatorMappingClassMetadata;
use 
SymfonyComponentValidatorConstraintsNotBlank;
use 
GedmoTranslatableTranslatable;
use 
GedmoMappingAnnotation as Gedmo;

/**
 * Lms\PostBundle\Entity
 *
 * @ORM\Table(name="post")
 * @ORM\Entity(repositoryClass="Lms\PostBundle\Entity\PostRepository")
 */
class Post implements Translatable
{
    
/**
     *
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    
protected $id;
    
    
/**
     *
     * @ORM\Column(type="string")
     * @Gedmo\Translatable  
     */
    
protected $subject;
    
    
/**
     *
     * @ORM\ManyToOne(targetEntity="PostCategory", inversedBy="post", cascade={"remove"})
     */
    
protected $postcategory;
    
    
    
/**
     * @gedmo:Locale
     * Used locale to override Translation listener`s locale
     * this is not a mapped field of entity metadata, just a simple property
     */
    
private $locale;

    public function 
setTranslatableLocale($locale)
    {
        
$this->locale $locale;
    }
    

    
/**
     * Get id
     *
     * @return integer 
     */
    
public function getId()
    {
        return 
$this->id;
    }

    
/**
     * Set subject
     *
     * @param string $subject
     */
    
public function setSubject($subject)
    {
        
$this->subject $subject;
    }

    
/**
     * Get subject
     *
     * @return string 
     */
    
public function getSubject()
    {
        return 
$this->subject;
    }



    
/**
     * Set postcategory
     *
     * @param Lms\PostBundle\Entity\PostCategory $postcategory
     */
    
public function setPostcategory(LmsPostBundleEntityPostCategory $postcategory)
    {
        
$this->postcategory $postcategory;
    }

    
/**
     * Get postcategory
     *
     * @return Lms\PostBundle\Entity\PostCategory 
     */
    
public function getPostcategory()
    {
        return 
$this->postcategory;
    }
    
    


Pero me sale un alerta
Table 'BaseDeDatos.ext_translations' doesn't exist

Entonces cree esa tabla y las columnas que poco a poco me salía de alerta de errores, hasta que... inserto! claro por que ya había creado la tabla y las columnas

ejemplo:
Código PHP:
       $post = new Post();

        
$post->setSubject('Post Nuevo !');
        
$post->setPostcategory($em->getReference('PostBundle:PostCategory'4));
        
        
$em->persist($post);
        
$em->flush(); 
        
        echo 
$post->getId

Note que me se inserto en la tabla de traducciones con la localidad por defecto que le dí en el config en_es

Pero si quiero insertar otra localidad, ejemplo.

Código PHP:

       $post
->setTranslatableLocale('es_us'); 
Me sigue insertando el en_es...

Por lo que sé hay una manera en que el Translatable te cree la tabla automática por lo que leí...

Se que hay una mejor manera inclusive para crear una tabla diferente por cada entidad.... para tener un orden... alguien sabe algo al respecto, es que encuentro poca documentación de esta extensión...

estoy trabajando en Symfony2

Saludos.