2013-05-29 20 views
0

我在使用可翻譯擴展時遇到問題。在Symfony2中鏈中找不到原則可翻譯類

我composer.json是這樣的:

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

我config.yml是這樣的:

# 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 

但是當我嘗試撥打這通電話:

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

我有這個錯誤:

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

有誰知道發生了什麼,我該如何解決?

謝謝!

+0

你已經註冊 「新的STOF \ DoctrineExtensionsBundle \ StofDoctrineExtensionsBundle()」,應用程序/ AppKernel.php裏面? – Sybio

+0

我有同樣的問題,你有沒有解決方案? –

+0

Mitchel,上面的答案工作正常。 – joaobarbosa

回答

2

我有同樣的錯誤,但我使用Zend框架2.

缺少的部分是在我的配置翻譯實體學說司機:

<?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' 
       ) 
      ) 
     ) 
    ); 

,不要忘了將TranslatableListener附加到Module Bootstrap中。

<?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

嗨,亞歷克斯,你還可以展示如何爲ZF2的loggable做同樣的事情嗎?我對Loggable擴展有同樣的問題。謝謝! – smozgur

0

僅供參考,您還可以添加listners在你的模塊配置:

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

嗨盧克。只是重複我的問題給亞歷克斯上面 - 考慮到你也將Loggable添加到模塊配置,你可能會幫助。我對Loggable擴展有同樣的問題。你知道我可以像Alex一樣在可翻譯的答案中引入像Loggable這樣的實體嗎?謝謝。 – smozgur