Konfigurieren der Translatable Doctrine2-Erweiterung mit Symfony2 mit YAML

8

Auf den Punkt gebracht

Ich schreibe eine Symfony2 / Doctrine2-App und habe die von StofDoctrineExtensionsBundle bereitgestellte Translatable-Erweiterung mit YAML installiert und konfiguriert, es werden jedoch keine zusätzlichen Übersetzungstabellen generiert und beim Versuch, mit Entitäten zu arbeiten, die folgende Ausnahme ausgelöst übersetzbare Eigenschaften:

  

Es wurde keine Zuordnungsdatei mit dem Namen '/var/www/my-project/vendor/gedmo/doctrine-extensions/lib/Gedmo/Translatable/Entity/Translation.orm.yml' für die Klasse 'Gedmo \ Translatable \ Entity \ Translation gefunden '.

Genauer gesagt

Ich versuche, die Translatable-Erweiterung in meiner Symfony2 / Doctrine2-Anwendung zu verwenden, die von StofDoctrineExtensionsBundle , aber die meisten verfügbaren Dokumente, die ich finden kann, zielen hauptsächlich auf die Verwendung von Anmerkungen für die Konfiguration, aber ich gehe mit YAML, weil ich so alles andere konfiguriert habe.

Meine Konfiguration

Ich habe meiner composer.json -Datei Folgendes hinzugefügt und den Befehl composer update : "stof/doctrine-extensions-bundle": "dev-master" ausgeführt, und das Paket ist in meiner app/AppKernel.php -Datei registriert.

Meine app/config/config.yml -Datei hat die folgende Konfiguration:

%Vor%

Ich habe dann eine Entität in YAML definiert:

%Vor%

Ich habe dann den Konsolenbefehl php app/console doctrine:generate:entities FooContentBundle ausgeführt, um die Entity-Klassen zu generieren, und habe die Locale-Eigenschaft und den Setter manuell hinzugefügt:

%Vor%

Nachdem ich php app/console doctrine:schema:update --force ausgeführt habe, wird meine Artikeltabelle zusammen mit ihren Assoziationen erstellt, aber nichts mit Übersetzungen (ich gehe davon aus, dass eine Tabelle dafür erstellt werden soll ...)

Wenn ich dann mit einer Entität arbeite, die übersetzbar ist, bekomme ich die Ausnahme:

  

Es wurde keine Zuordnungsdatei mit dem Namen '/var/www/my-project/vendor/gedmo/doctrine-extensions/lib/Gedmo/Translatable/Entity/Translation.orm.yml' für die Klasse 'Gedmo \ Translatable \ Entity \ Translation gefunden '.

Die YAML-Datei, auf die die Exception verweist, existiert nicht in dem Pfad, in dem sie gesucht wird, und auch nicht anderswo.

Hat jemand irgendwelche Ideen, wo ich falsch liege?

Update: Nach weiteren Untersuchungen ...

Running php app/console doctrine:mapping:info zeigt alle meine Entitäten und nichts in Bezug auf Übersetzungen an, wenn ich den gedmo_translatable: Teil meiner app/config/config.yml Datei aktualisiere und type: yml zu type: annotation ändere, führe den Befehl erneut aus, I Holen Sie sich Folgendes aufgelistet:

%Vor%

An diesem Punkt kann ich mein Schema aktualisieren, und ich habe eine neue Tabelle ext_translations . Bei der Arbeit mit meinen Entitäten wird jedoch nichts eingefügt, vermutlich weil die Konfiguration jetzt eher durch Annotation als durch YAML erwartet wird. Wenn ich meine Konfiguration wieder in type: yml ändere, wird die Exception erwartungsgemäß erneut ausgelöst.

    
Kris 17.10.2012, 13:46
quelle

1 Antwort

5

Nachdem Sie versucht haben, Dinge, die in der Dokumentation vorgeschlagen werden, nicht zu verwenden, d. h. sowohl Annotation- als auch YAML-Konfigurationen im selben Bundle zu mischen, würde es so aussehen, als ob Dinge funktionieren. Das Ganze fühlt sich an wie ein Fehler oder eine unvollständige Implementierung, aber ich kann etwas falsch machen. Hier ist, was funktioniert ...

Einstellung in app/config/config.yml : doctrine.orm.mappings.gedmo_translatable.type: annotation

Einstellung der übersetzbaren Konfiguration in meiner YAML-Schemadefinition, wie in meiner ursprünglichen Frage sowie als Anmerkung in meiner Klassendatei beschrieben:

%Vor%

Danach wird die zusätzliche Tabelle erstellt und Übersetzungen werden eingefügt, wenn die Entität beibehalten wird.

    
Kris 19.10.2012, 13:50
quelle

Tags und Links