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てプロパティのスラッグを使用しています。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 に答える