Установка расширений Doctrine в проекте Symfony 2 приводит к фатальной ошибке - PullRequest
4 голосов
/ 23 ноября 2011

Вот проблема: мне не удается установить расширения доктрины с Symphony 2, особенно с отметкой времени.Я следую этому учебнику

Как мне поступить:

Я добавляю следующие строки в файл deps:

[gedmo-doctrine-extensions]
   git=http://github.com/l3pp4rd/DoctrineExtensions.git

[Stof-DoctrineExtensionsBundle]
   git=https://github.com/stof/StofDoctrineExtensionsBundle.git
   target=/bundles/Stof/DoctrineExtensionsBundle

Затем я вхожу в строку

./bin/vendors install --reinstall

Все в порядке.

Затем я активирую расширения в соответствующих файлах

# config.yml
stof_doctrine_extensions:
    default_locale: fr_FR
    orm:
        default:
            timestampable: true


# AppKernel.php    
use Symfony\Component\HttpKernel\Kernel;
use Symfony\Component\Config\Loader\LoaderInterface;

class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array(
            [...]
            new Stof\DoctrineExtensionsBundle\StofDoctrineExtensionsBundle(),
            [...]
        );

# autoload.php
use Symfony\Component\ClassLoader\UniversalClassLoader;
use Doctrine\Common\Annotations\AnnotationRegistry;

$loader = new UniversalClassLoader();
$loader->registerNamespaces(array(
    'Gedmo'            => __DIR__.'/../vendor/gedmo-doctrine-extensions/lib',
    'Stof'             => __DIR__.'/../vendor/bundles', 
    [...]
    ));

Наконец, я добавляю аннотацию к моей сущности

/**
 * @var datetime $updatedAt
 *
 * @ORM\Column(name="updated_at", type="datetime")
 * @Gedmo:Timestampable(on="update")
 */
private $updatedAt;

Но у меня есть эта ошибка:

Неустранимая ошибка: класс 'Gedmo \ Timestampable \ TimestampableListener' не найден в /Symfony/app/cache/dev/appDevDebugProjectContainer.php в строке 203

Что я делаю не так?

Ответы [ 2 ]

1 голос
/ 23 ноября 2011

Использование @Gedmo\Timestampable(on="update") и указание правильного пути при регистрации пространства имен, похоже, решают проблему.

0 голосов
/ 07 декабря 2012

Для Symfony 2.0.x и Doctrine 2.1.x. проекты, которые вам нужно будет указать совместимые версии расширений в deps, это то, что у меня работает:

[DoctrineExtensions]
    git=https://github.com/l3pp4rd/DoctrineExtensions.git
    target=/gedmo-doctrine-extensions
    version=origin/doctrine2.1.x

[StofDoctrineExtensionsBundle]
    git=https://github.com/stof/StofDoctrineExtensionsBundle.git
    target=/bundles/Stof/DoctrineExtensionsBundle
    version=1.0.2
...