2013-05-29 2 views
0

J'ai un problème avec l'extension Translatable.Doctrine Classe traduisible introuvable dans la chaîne dans Symfony2

Mon composer.json est comme ceci:

... 
"doctrine/orm": "~2.2,>=2.2.3", 
"doctrine/doctrine-bundle": "1.2.*", 
"stof/doctrine-extensions-bundle": "@dev", 
"gedmo/doctrine-extensions": "2.3.*@dev" 
... 

Mon config.yml est comme ceci:

# Translatable Configuration 
stof_doctrine_extensions: 
    default_locale: br 
    translation_fallback: true 
    orm: 
     default: 
      tree: true 
      translatable: true # not needed: listeners are not enabled by default 

Mais lorsque je tente de faire cet appel:

$translatable = $em->getRepository('Gedmo\\Translatable\\Entity\\Translation'); 

J'ai cette erreur:

The class 'Gedmo\Translatable\Entity\Translation' was not found in the chain configured namespaces Project\Portal\SampleBundle\Entity, Project\Portal\ExampleBundle\Entity, Project\Portal\CoreBundle\Entity

Est-ce que quelqu'un sait ce qui se passe et comment puis-je le réparer?

Merci!

+0

avez-vous enregistré "nouveau Stof \ DoctrineExtensionsBundle \ StofDoctrineExtensionsBundle()", à l'intérieur app/AppKernel.php? – Sybio

+0

J'ai le même problème, avez-vous déjà une solution? –

+0

Mitchel, la réponse ci-dessus a bien fonctionné. – joaobarbosa

Répondre

2

J'ai eu la même erreur, mais j'utilise Zend Framework 2.

La pièce manquante était le pilote de doctrine pour les entités traduisibles dans ma configuration:

<?php 
return array(
    'doctrine' => array(
     'driver' => array(
      'base_entities' => array(
       'class' =>'Doctrine\ORM\Mapping\Driver\AnnotationDriver', 
       'cache' => 'array', 
       'paths' => array(__DIR__ . '/../src/Base/Entity') 
      ), 
      // here 
      'translatable_entities' => array(
       'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver', 
       'cache' => 'array', 
       'paths' => array(__DIR__ . '/../../../vendor/gedmo/doctrine-extensions/lib/Gedmo/Translatable/Entity') 
      ), 
      'orm_default' => array(
       'drivers' => array(
        'Base\Entity' => 'base_entities', 
        // and here 
        'Gedmo\Translatable\Entity' => 'translatable_entities' 
       ) 
      ) 
     ) 
    ); 

et ne pas oublier de attacher le TranslatableListener dans votre Bootstrap de module.

<?php 

namespace Base; 

use Zend\Mvc\ModuleRouteListener; 

use Zend\EventManager\EventInterface; 
use Zend\ModuleManager\Feature; 

class Module implements 
    Feature\BootstrapListenerInterface { 

    public function onBootstrap(EventInterface $e) { 

     $sm = $e->getApplication()->getServiceManager(); 
     $em = $sm->get('doctrine.entitymanager.orm_default'); 
     $doctrineEventManager = $em->getEventManager(); 

     $translatableListener = new \Gedmo\Translatable\TranslatableListener();   
     $translatableListener->setDefaultLocale('de'); 
     $doctrineEventManager->addEventSubscriber($translatableListener); 
+0

Salut Alex, peux-tu aussi montrer comment faire la même chose pour le loggable pour ZF2? J'ai le même problème pour l'extension Loggable. Je vous remercie! – smozgur

0

Juste pour référence, vous pouvez également ajouter les listners dans votre configuration du module:

'doctrine' => array(
    ... 
    'eventmanager' => array(
     'orm_default' => array(
      'subscribers' => array(
       'Gedmo\Sluggable\SluggableListener', 
       'Gedmo\Timestampable\TimestampableListener', 
       'Gedmo\SoftDeleteable\SoftDeleteableListener', 
       'Gedmo\Loggable\LoggableListener', 
       ... 
      ), 
     ), 
    ), 
), 
+0

Bonjour Luke. Je répète juste ma question à Alex ci-dessus - en considérant que vous avez également ajouté Loggable dans la configuration du module et que vous pourriez aider. J'ai le même problème pour l'extension Loggable. Savez-vous comment je peux présenter mes entités pour Loggable comme Alex a fait dans la réponse pour Translatable? Je vous remercie. – smozgur

Questions connexes