Symfony2:Doctrine将某些字段读为null,而不是

时间:2015-03-02 18:15:44

标签: symfony collections null doctrine nested

我面临的问题相对复杂..

但是在表格中填写的某些字段是由Null by Doctrine ORM在Flush时考虑的。

我想我必须从具体的背景开始。

我正在研究一个适用于三层嵌套集合的“文章”实体。 Article对象有一个“组件”集合(或多或少的列),它们又划分为“章节”(由带有标题的文本组成),最终可以在底部的链接集合中。

我提到这一点,因为它可能是功能障碍的可能原因,因为我的集合JavaScript代码有很大的改进空间。就是这样,我必须指定嵌套的Section集合的代码已经完全可操作。表格正确显示并保存。

我在过去两天一直在努力添加链接嵌套Collection,并且我已经设法使它正常显示(包括用索引重载原型)但是当我尝试提交我的表单时。我在标记为必需/非空的两个字段时遇到问题。表单无法保留,因为这些值为null。但是那些输入字段不是。

链接对象具有“名称”“url”“image”“group”和“section” 最后两个属性在表单之外填充。图像可以为空。 name和url是两个错误的属性。它们不应该被标记为null。

如果您熟悉symfony中的集合原型,您知道原型中的某些文本将被替换为在html标签和属性中显示正确的索引。 例如在我的情况下:  name="article[components][0][sections][0][links][0][URL]" 这是有效的,为此,我将在原型中替换所有出现的以下文本:__name____sectionName____linkName__。 我的链接原型中有一个错误:链接对象名称值的html name属性中的__slinkName__。奇怪的是,它使学说接受了该领域的价值。我尝试了错误拼写它不起作用。我尝试错误地输入生成url字段的行,然后再次使doctrine接受另一个字段的值(名称字段),但不接受我输错的那个。

因此我的结论是我的JavaScript存在问题。然而 我在刷新之前做了一个关于jsust的var_dump,字段是正确的。

以下是Controller的摘录,与我刚才描述的内容相符:

 foreach ($article->getComponents() as $col){
                foreach($col->getSections() as $section){
                    if ($section instanceof Section && $section->getImage()){
                        $section->getImage()->setFolder('country/'.$country.'/'.$topic);
                    }
                    foreach($section->getLinks() as $link){


                        $link->setGroup($group);
                        var_dump($link);
                        if($link instanceof SectionLink && $link->getImage()){
                            $link->getImage()->setFolder('country/'.$country);
                        }

                    }
                    die();
                }
            }
            $em->flush();

现在var_dump:

protected 'id' => null
protected 'image' => null
protected 'name' => string 'Google' (length=6)
protected 'url' => string 'www.google.fr' (length=13)

什么可能导致学说将这两个字段视为空? 在这一点上,某些东西阻止了Doctrine知道应该插入到link.name中的值被称为'name'。

我应该补充一点,SectionLink实体继承自Link实体,并为ManyToOne关系添加Section属性。 我过去在继承和教义方面遇到过问题,所以这也是一个可能的领导......

提前感谢那些可以提供帮助的人......我不知道发生了什么......

0 个答案:

没有答案