无法在实体 Gedmo Doctrine Extensions 中找到映射 属性 的 slug [slug]
Unable to find slug [slug] as mapped property in entity Gedmo Doctrine Extensions
我正在 Symfony 2 中实现 Gedmo Sluggable 注释,但根本无法生成 slug,每次我尝试保存对象时都会抛出 500 错误。
我已经尝试创建一个新对象以及更新一个已定义 slug 的现有对象。
// config.yml
stof_doctrine_extensions:
default_locale: en_US
orm:
default:
timestampable: true
uploadable: true
sluggable: true
对象class
// Journal.php
<?php
namespace Example\JournalBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;
use Example\UserBundle\Entity\User;
use \DateTime;
/**
* Class Journal
* @package Example\JournalBundle\Entity
*
* @ORM\Entity(repositoryClass="Example\JournalBundle\Entity\JournalRepository")
* @ORM\Table(name="journal", indexes={
* @ORM\Index(name="idx_created", columns={"created"}),
* @ORM\Index(name="idx_status", columns={"status"})
* })
*/
class Journal
{
/**
* @var int
*
* @ORM\Column(type="integer", options={"unsigned"=true})
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @var string
*
* @ORM\Column(type="string", length=100)
*/
protected $title;
/**
* @Gedmo\Slug(fields={"title", "id"})
* @ORM\Column(length=128, unique=true)
*/
protected $slug;
/**
* @return mixed
*/
public function getSlug()
{
return $this->slug;
}
/**
* @param mixed $slug
* @return $this
*/
public function setSlug($slug)
{
$this->slug = $slug;
return $this;
}
}
控制器
<?php
namespace Example\JournalBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Symfony\Component\HttpFoundation\Request;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
use Example\JournalBundle\Entity\Journal;
/**
* Class JournalController
* @package Example\JournalBundle\Controller
*
* @Route("/journals")
*/
class JournalController extends Controller
{
/**
* @Route("/slugify")
* @Security("is_granted('IS_AUTHENTICATED_ANONYMOUSLY')")
* @Template("ExampleJournalBundle::test.html.twig")
*/
public function slugifyAction()
{
$em = $this->getDoctrine()->getManager();
$user = $this->getUser();
$journal = new Journal();
$journal->setBody('this is the body');
$journal->setTitle('this is the title');
$journal->setPrivacy(1);
$journal->setStatus(1);
$journal->setType(1);
$journal->setUser($user);
$em->persist($journal);
$em->flush();
}
}
它抛出以下错误:
知道为什么 sluggable 不起作用吗?
我的计算机上的缓存存在一些问题。
我将我们的 repo 克隆到一个新文件夹中,并向该版本添加了相同的注释,并且 sluggable 工作得很好。
重新启动计算机后,sluggable 开始工作
所以在某个地方有一些我无法清除的缓存,缓存有问题。
¯\_(ツ)_/¯
我正在 Symfony 2 中实现 Gedmo Sluggable 注释,但根本无法生成 slug,每次我尝试保存对象时都会抛出 500 错误。
我已经尝试创建一个新对象以及更新一个已定义 slug 的现有对象。
// config.yml
stof_doctrine_extensions:
default_locale: en_US
orm:
default:
timestampable: true
uploadable: true
sluggable: true
对象class
// Journal.php
<?php
namespace Example\JournalBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;
use Example\UserBundle\Entity\User;
use \DateTime;
/**
* Class Journal
* @package Example\JournalBundle\Entity
*
* @ORM\Entity(repositoryClass="Example\JournalBundle\Entity\JournalRepository")
* @ORM\Table(name="journal", indexes={
* @ORM\Index(name="idx_created", columns={"created"}),
* @ORM\Index(name="idx_status", columns={"status"})
* })
*/
class Journal
{
/**
* @var int
*
* @ORM\Column(type="integer", options={"unsigned"=true})
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @var string
*
* @ORM\Column(type="string", length=100)
*/
protected $title;
/**
* @Gedmo\Slug(fields={"title", "id"})
* @ORM\Column(length=128, unique=true)
*/
protected $slug;
/**
* @return mixed
*/
public function getSlug()
{
return $this->slug;
}
/**
* @param mixed $slug
* @return $this
*/
public function setSlug($slug)
{
$this->slug = $slug;
return $this;
}
}
控制器
<?php
namespace Example\JournalBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Symfony\Component\HttpFoundation\Request;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
use Example\JournalBundle\Entity\Journal;
/**
* Class JournalController
* @package Example\JournalBundle\Controller
*
* @Route("/journals")
*/
class JournalController extends Controller
{
/**
* @Route("/slugify")
* @Security("is_granted('IS_AUTHENTICATED_ANONYMOUSLY')")
* @Template("ExampleJournalBundle::test.html.twig")
*/
public function slugifyAction()
{
$em = $this->getDoctrine()->getManager();
$user = $this->getUser();
$journal = new Journal();
$journal->setBody('this is the body');
$journal->setTitle('this is the title');
$journal->setPrivacy(1);
$journal->setStatus(1);
$journal->setType(1);
$journal->setUser($user);
$em->persist($journal);
$em->flush();
}
}
它抛出以下错误:
我的计算机上的缓存存在一些问题。
我将我们的 repo 克隆到一个新文件夹中,并向该版本添加了相同的注释,并且 sluggable 工作得很好。
重新启动计算机后,sluggable 开始工作
所以在某个地方有一些我无法清除的缓存,缓存有问题。
¯\_(ツ)_/¯