Symfony2 Sluggable不存在或无法自动加载

时间:2011-11-03 16:28:02

标签: mongodb symfony slug

我一直在尝试让现有的项目在本地副本上运行,但一直在解决ODM和依赖项的很多问题。

我遇到了这个可耻的问题:

[Semantical Error] The annotation "@Gedmo\Mapping\Annotation\Sluggable" in property       
Cereals\ProductBundle\Document\Category\Specialty::$name does not exist, or could not be 
auto-loaded.

我的谷物...... \专业文件是这样的:

<?php
namespace Cereals\ProductBundle\Document\Category;
use Doctrine\ODM\MongoDB\Mapping\Annotations as MongoDB;
use Gedmo\Mapping\Annotation as Gedmo;

/**
* @MongoDB\Document(collection="Specialty",    
repositoryClass="Cereals\ProductBundle\Repository\SpecialtyRepository")
*/
class Specialty
{
/**
* @MongoDB\Id(strategy="auto")
*/
protected $id;

/**
 * @Gedmo\Sluggable
 * @MongoDB\Index(order="asc")
 * @MongoDB\String
 */
protected $name;

/**
 * @MongoDB\String
 * @MongoDB\UniqueIndex
 * @Gedmo\Slug
 */
protected $slug;

/**
 * @MongoDB\String
 */

我从谷歌了解到,doctrine 2.1.x有一些语法更新,我也在这里使用@Gedmo \ Mapping \ Annotation \ Sluggable的新注释。

仍然出现语义错误。

任何人都可以指出一些方向吗?谢谢 !

1 个答案:

答案 0 :(得分:1)

@Gedmo\Sluggable注释不存在。如果你查看这个folder,你会发现这个anottation没有实现。

实际上,你可以像这样定义你的类:

<?php
namespace Cereals\ProductBundle\Document\Category;
use Doctrine\ODM\MongoDB\Mapping\Annotations as MongoDB;
use Gedmo\Mapping\Annotation as Gedmo;

/**
* @MongoDB\Document(collection="Specialty",    
repositoryClass="Cereals\ProductBundle\Repository\SpecialtyRepository")
*/
class Specialty
{
    /**
    * @MongoDB\Id(strategy="auto")
    */
    protected $id;

    /**
     * @MongoDB\Index(order="asc")
     * @MongoDB\String
     */
    protected $name;

    /**
     * @MongoDB\String
     * @MongoDB\UniqueIndex
     * @Gedmo\Slug(fields={"name"})
     */
    protected $slug;
}

@Gedmo\Slug注释需要用于生成段塞的属性。