2013-05-29 3 views
0

У меня возникла проблема с использованием расширения Translatable.Doctrine Переводимый класс не найден в цепочке в 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

Митчел, ответ выше работал нормально. – joaobarbosa

ответ

2

я имел ту же ошибку, но я использую Zend Framework 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' 
       ) 
      ) 
     ) 
    ); 

и не забудьте прикрепите TranslitableListener в модуле 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. Спасибо! – 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. Вы знаете, как я могу представить свои сущности для Loggable, как Алекс, в ответ на Translatable? Спасибо. – smozgur

Смежные вопросы