我一直在尝试让现有的项目在本地副本上运行,但一直在解决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的新注释。
仍然出现语义错误。
任何人都可以指出一些方向吗?谢谢 !
答案 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
注释需要用于生成段塞的属性。