Symfony 2 - 使用表单时未设置 Sluggable

Posted

技术标签:

【中文标题】Symfony 2 - 使用表单时未设置 Sluggable【英文标题】:Symfony 2 - Sluggable not set when using form 【发布时间】:2012-07-15 14:58:26 【问题描述】:

我正在尝试使用 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 字段添加到表单构建器并手动设置一个值,它可以正常工作,但显然我不想搞砸这个。

谁能帮忙?

谢谢

【问题讨论】:

你有没有:使用Gedmo\Mapping\Annotation作为Gedmo;在实体类中? 是的。该实体也(成功地)使用了树扩展。 【参考方案1】:

知道了。

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

sluggable:是的

所以它应该是这样的:

stof_doctrine_extensions:
    default_locale: en
    translation_fallback: true
    orm:
        default:
            tree: true
            timestampable: true
            sluggable: true

【讨论】:

thx,一直在寻找这个答案......在上一个项目中,我的同事做了这个,我无法弄清楚我做错了什么...... 确保你把它放在“stof_doctrine_extensions”而不是“doctrine”下,因为我花了一段时间才看到我的错误 我遇到了同样的问题,我添加了这些配置,但我得到了这个错误:There is no extension able to load the configuration for "stof_doctrine_extensions" 。谁能帮帮我?

以上是关于Symfony 2 - 使用表单时未设置 Sluggable的主要内容,如果未能解决你的问题,请参考以下文章

直接访问登录表单时未设置会话 cookie,导致 CSRF 令牌无效

Symfony2 独立表单组件 v2.3 - 设置表单

Symfony 3.4 文件在使用 createFormBuilder 时未经过验证

Symfony 2. 如何为实体的嵌入表单设置默认值?

在 symfony 2 中将验证组设置为嵌入表单

Symfony 5 - 在类别 url 中显示 id 和 slug 并在更新 slug 时通过 id 找到它