0

我一直在尝试在使用 MongoDB 的 ZF2 RC2 应用程序上使用 Doctrine2 的gedmo sluggable 行为,但总是以错误告终,说 Doctrine 找不到注释,即使它的侦听器已经订阅了配置文件中的事件管理器.

这是我得到的确切错误消息:

[Semantical Error] The annotation "@Gedmo\Mapping\Annotation\Slug" in property Application\Document\Place::$login does not exist, or could not be auto-loaded.

我的module.doctrine-mongo-odm.local.php文件包含有关此问题的以下内容:

[...]
'eventmanager' => array(
    'odm_default' => array(
        'subscribers' => array(
            'Gedmo\Sluggable\SluggableListener'
        )
    )
),
[...]

我知道SluggableListener只需在其中放置一个漂亮die;的就可以加载__construct(),这意味着自动加载可以工作。

现在在Place文档中,我通过注释使用属性上的 slug,login就像这样:

<?php
namespace Application\Document;
use Doctrine\ODM\MongoDB\Mapping\Annotations as ODM
 ,  Gedmo\Mapping\Annotation as Gedmo;


/** @ODM\Document(collection="places") */
class Place
{
[...]
/**
 * @ODM\String
 * @Gedmo\Slug(fields={name})
 */
private $login;

/** @ODM\String */
private $name;
[...]

我在那里想念什么?谢谢你的帮助 !

4

1 回答 1

2

您需要注册任何额外的注释,而不仅仅是添加侦听器。在 Mongo 模块配置中使用以下键:

'configuration' => array(
    'odm_default' => array(
        'annotations'        => array(), // array('Annotation\Namespace\' => '/../annotation/path')
    )
),
于 2012-08-06T22:35:37.510 回答