Регенерирующий слизень Doctrine2

Я пытаюсь повторно создать slug для сущностей, которые я создал до установки расширения Sluggable для Doctrine2, как это объясняется здесь: Регенерирующий слаг, но когда я устанавливаю для него пустую строку или ноль, он не регенерируется, он просто устанавливается как нуль.

Что я делаю неправильно?

Лицо:

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Gedmo\Mapping\Annotation as Gedmo;

/**
* @ORM\Entity
* @ORM\Table(name="product")
*/
class Product
{

/**
 * @ORM\Id
 * @ORM\Column(type="integer")
 * @ORM\GeneratedValue(strategy="AUTO")
 */
protected $id;

/**
 * @ORM\Column(type="string", length=200)
 * @Assert\NotBlank()
 */
protected $name;

/**
 * @ORM\Column(type="text")
 * @Assert\NotBlank()
 */
protected $description;

...

/**
 * @Gedmo\Slug(fields={"name"})
 * @ORM\Column(length=200, unique=true)
 */
private $slug;

public function getSlug()
{
    return $this->slug;
}
public function setSlug($slug)
{
    $this->slug = $slug;

}
}

И тогда я пробую это:

$repository = $this->getDoctrine()->getRepository('CommonBundle:Product');
$product = $repository->findOneBy(array("id"=>1));
$product->setSlug('');
$em = $this->getDoctrine()->getEntityManager();
$em->persist($product);
$em->flush();

person Manu    schedule 03.08.2012    source источник
comment
Можете ли вы опубликовать более подробную информацию о своей сущности и коде, который вы используете для регенерации слага?   -  person Carlos Granados    schedule 03.08.2012


Ответы (1)


ХОРОШО. Я знаю, что происходит. Вероятно, вы используете более старую версию Doctrine Extensions, вероятно, версию 2.1.0. Это было бы в случае, если вы разрабатываете с Symfony 2.0.X, поскольку это версия, которая была рекомендована. Проверьте свой файл deps, возможно, у вас есть что-то вроде:

[gedmo-doctrine-extensions]
    git=http://github.com/l3pp4rd/DoctrineExtensions.git
    version=v2.1.0

Эти старые версии расширений не поддерживают поведение, описанное в документации (регенерировать слаг, если он пуст). Вам нужно будет обновить вашу версию расширений, но это может означать, что вам, возможно, придется обновить версии Doctrine до 2.2, не совсем уверен.

person Carlos Granados    schedule 03.08.2012