8

DoctrineExtensionsバンドルのSluggable動作を使用しようとしています。

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

アノテーションを使用してエンティティにスラッガブルフィールドを設定しましたが、フォームを使用してインスタンスを作成すると値が設定されないため、次のエラーが発生します。

SQLSTATE [23000]:整合性制約違反:1048列'slug'をnullにすることはできません

これが私のコントローラーからのコードです:

        $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クラスのslugableフィールド定義は次のとおりです。

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

スラッグフィールドをフォームビルダーに追加して手動で値を設定すると、問題なく機能しますが、明らかにこれをいじりたくありません。

誰か助けてもらえますか?

ありがとう

4

1 に答える 1

34

とった。

次の行を config.yml ファイルに追加するのを忘れていました。

スラッグ可能: true

したがって、次のようになります。

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