【问题标题】:Can't find gedmo annotation in ZF2 RC for Doctrine 2 Mongo ODM在 ZF2 RC 中找不到 Doctrine 2 Mongo ODM 的 gedmo 注释
【发布时间】:2012-08-03 11:27:42
【问题描述】:

我一直在尝试在使用 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 是通过在 __construct() 中放置一个漂亮的 die; 来加载的,这意味着自动加载工作正常。

现在在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;
[...]

我在那里缺少什么?感谢您的帮助!

【问题讨论】:

    标签: doctrine-orm zend-framework2 doctrine-odm


    【解决方案1】:

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

    'configuration' => array(
        'odm_default' => array(
            'annotations'        => array(), // array('Annotation\Namespace\' => '/../annotation/path')
        )
    ),
    

    【讨论】:

    • 好的,谢谢@superdweebie,这是有道理的,但是我无法找出正确的数据放在那里。我尝试了一堆不同的东西,但没有取得太大的成功。我猜我最好的尝试是这次尝试,但没有成功:'Gedmo\Mapping\Annotation' =&gt; 'vendor/gedmo/doctrine-extensions/lib/Gedmo/Mapping/Annotation'。有什么想法吗?
    • 我自己还没有使用 DoctrineMongoODMModule 设置 l3pp4rd 的 DoctrineExtensions,但我很惊讶这对你不起作用。注释使用它们自己的自动加载器,因此您可能需要使用完整路径 (??) 使用 DIR 常量来帮助您。如果这不起作用,请在 github 上记录问题,我们将进一步调查。平@Ocramius
    • 我确实玩过__DIR__,但没有获得更多成功,我确信我传递的目录是正确的。这很奇怪,我已经深入研究了代码并到达:DoctrineMongoODMModule\Service\ConfigurationFactory::createService() 在那里我找到了对AnnotationRegistry::registerAutoloadNamespaces($options-&gt;getAnnotations()); 的调用,这里从getAnnotations() 检索到的注释目录看起来就像我放入配置文件中的内容最后评论。
    • @jhuet 很抱歉您遇到的问题。我刚刚在 github 上提交了一些拉取请求,希望能够清理注释加载。
    • 没问题@superdweebie ;它仍处于测试阶段:) 非常感谢您的帮助!合并后我会尽快查看。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-16
    • 2012-09-14
    相关资源
    最近更新 更多