8

我正在尝试使用 Doctrine Extensions 捆绑包中的 Sluggable 行为:

http://gediminasm.org/article/sluggable-behavior-extension-for-doctrine-2

我已经使用注释在我的实体中设置了一个 sluggable 字段,但是当我使用表单创建实例时没有设置值,这会导致以下错误:

SQLSTATE [23000]:违反完整性约束:1048 列“slug”不能为空

这是我的控制器的代码:

        $form = $this->createFormBuilder($section)
                        ->add('title', 'text')
                        ->getForm();

        if ($request->getMethod() == 'POST') {
        $form->bindRequest($request);

            if ($form->isValid()) {

                $em = $this->getDoctrine()->getEntityManager();
                $em->persist($section);
                $em->flush();

                if (empty($id)) {
                    return $this->redirect($this->generateUrl('ContentBundle_section_new'));
                }
                else {
                    return $this->redirect($this->generateUrl('ContentBundle_section_edit', array('id' => $id)));
                }

            }
        }

以及 Entity 类中的 sluggable 字段定义:

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

如果我将 slug 字段添加到 formbuilder 并手动设置一个值,它可以正常工作,但显然我不想搞砸这个。

任何人都可以帮忙吗?

谢谢

4

1 回答 1

34

知道了。

我忘记将以下行添加到 config.yml 文件中:

sluggable:真

所以它应该是这样的:

stof_doctrine_extensions:
    default_locale: en
    translation_fallback: true
    orm:
        default:
            tree: true
            timestampable: true
            sluggable: true
于 2012-07-16T19:23:01.100 回答