在Symfony2中找不到Doctrine可翻译类


Doctrine Translatable class not found in chain in Symfony2

我在使用可翻译扩展时遇到问题。

我的作曲家。Json是这样的:

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

我的配置。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');

我得到了这个错误:

在链配置的命名空间Project'Portal'SampleBundle'Entity、Project'Portal'ExampleBundle'Entity、Project'Portal'CoreBundle'Entity中找不到类"Gedmo' translable 'Entity'Translation"

有没有人知道发生了什么,我怎么能解决它?

谢谢!

我有同样的错误,但我使用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'
                )
            )
        )
    );

,不要忘记在你的模块引导中附加translatabllistener。

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

仅供参考,您还可以在模块配置中添加侦听器:

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