我一直在尝试在使用MongoDB的ZF2 RC2应用程序上使用gedmo sluggable behavior用于Doctrine2,但总是会出现错误,说明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
文档中,我通过注释使用login
属性上的slug:
<?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;
[...]
我在那里错过了什么?谢谢你的帮助!
答案 0 :(得分:2)
您需要注册任何额外的注释,而不仅仅是添加侦听器。在Mongo模块配置中使用以下键:
'configuration' => array(
'odm_default' => array(
'annotations' => array(), // array('Annotation\Namespace\' => '/../annotation/path')
)
),