2017-07-25 6 views
0

Ich bin auf der Suche nach Hilfe mit Gedmo Translatable und Symfony 3. Ich benutze die Yml-Datei, um meine Entitäten zu deklarieren und es funktioniert, aber wenn ich versuche, gedmo übersetzbar zu verwenden, tut es das nicht. t erstellen alle Übersetzungen Tisch ...Gedmo Translatable funktioniert nicht auf Symfony 3

meinen config.yml:

orm: 
     auto_generate_proxy_classes: '%kernel.debug%' 
     naming_strategy: doctrine.orm.naming_strategy.underscore 
     auto_mapping: true 
     filters: 
      softdeleteable: 
       class: Gedmo\SoftDeleteable\Filter\SoftDeleteableFilter 
       enabled: true 
     #translatable 
     mappings: 
      translatable: 
       type: annotation 
       alias: Gedmo 
       prefix: Gedmo\Translatable\Entity 
       dir: "%kernel.root_dir%/../vendor/gedmo/doctrine-extensions/lib/Gedmo/Translatable/Entity/MappedSuperclass" 

ich weiß nicht, ob der Typ Wert "annoation" in meinem Fall. Ich habe versucht "Yml", aber es hat nicht funktioniert.

Kategorie Entity:

<?php 

namespace Project\MyBundle\Entity; 
use Doctrine\ORM\Query\AST\InExpression; 

use Gedmo\Mapping\Annotation as Gedmo; 
use Gedmo\Translatable\Translatable; 

/** 
* Category 
*/ 
class Category extends \Project\MyBundle\Entity\Item implements \Project\MyBundle\Model\CategoryInterface, Translatable 
{ 
    /** 
    * @Gedmo\Translatable 
    * @var string 
    */ 
    private $label; 

    /** 
    * @Gedmo\Translatable 
    * @var string 
    */ 
    private $description; 

} 

category.orm.yml:

Project\MyBundle\Entity\Category: 
    type: entity 
    table: category 
    repositoryClass: Project\MyBundle\Repository\CategoryRepository 
    gedmo: 
     translation: 
      entity: Project\MyBundle\Entity\Translation\CategoryTranslation 
    fields: 
     label: 
      type: string 
      length: 255 
      gedmo: 
       - translatable 
     description: 
      type: string 
      length: 255 
      gedmo: 
       - translatable 

Und mein CategoryTranslation.php:

<?php 

namespace Project\MyBundle\Entity\Translation; 

use Doctrine\ORM\Mapping as ORM; 
use Gedmo\Translatable\Entity\MappedSuperclass\AbstractTranslation; 

/** 
* @ORM\Table(name="category_translation", indexes={ 
*  @ORM\Index(name="category_translation_idx", columns={"locale", "object_class", "field", "foreign_key"}) 
* }) 
* @ORM\Entity(repositoryClass="Gedmo\Translatable\Entity\Repository\TranslationRepository") 
*/ 
class CategoryTranslation extends AbstractTranslation 
{ 
    /** 
    * All required columns are mapped through inherited superclass 
    */ 
} 

Als ich "Lehre: Mapping: info" run-Befehl:

Found XX mapped entities: 
[OK] Gedmo\Translatable\Entity\MappedSuperclass\AbstractPersonalTranslation 
[OK] Gedmo\Translatable\Entity\MappedSuperclass\AbstractTranslation 
.... 
[OK] Project\MyBundle\Entity\Category 
... 

Kategorie ist in Ordnung, aber nicht sehen können CategoryTranslation ...

Haben Sie eine Idee des Problems?

Vielen Dank!

Antwort

0

Ich habe etwas gefunden, aber es funktioniert immer noch nicht.

Ich füge einen Translation.CategoryTranslation.orm.yml mit diesem Code:

Project\MyBundle\Entity\Translation\CategoryTranslation: 
    type: entity 
    table: category_translation 
    repositoryClass: Gedmo\Translatable\Entity\Repository\TranslationRepository 
    indexes: 
    category_translation_idx: 
     columns: [ locale, object_class, field, foreign_key ] 

Aber, wenn ich "php ist/Konsole Lehre: schema: update --dump-SQL" ausführen Befehl, Ich habe einen Fehler:

"Es gibt keine Spalte mit dem Namen 'locale' in der Tabelle 'category_translation'". Hier meine category_translation Datei:

<?php 

namespace Project\MyBundle\Entity\Translation; 

use Gedmo\Translatable\Entity\MappedSuperclass\AbstractTranslation; 

class CategoryTranslation extends AbstractTranslation 
{ 
    /** 
    * All required columns are mapped through inherited superclass 
    */ 
} 

locale Ausprägungs sollte nicht in Gedmo AbstractTranslation Klasse deklariert werden? Also ich bin sicher, wenn ich es in CategoryTranslation Klasse richtig definieren muss?

Vielen Dank!

Verwandte Themen