奏鸣曲管理员 - 无法让sonata_type_collection与模态一起使用

时间:2016-12-02 21:58:16

标签: php symfony sonata-admin sonata

在我的管理员中,我将OneToMany定义为:

/**
 * @ORM\OneToMany(targetEntity="Module", mappedBy="sequence", cascade={"persist", "remove"})
 */
 private $modules;

反面:

/**
 * @ORM\ManyToOne(targetEntity="ModuleSequence", inversedBy="modules", cascade={"persist"}, fetch="LAZY")
 * @ORM\JoinColumn(name="sequence_id", referencedColumnName="id")
 */
protected $sequence;

在我的管理课程中,我定义了'模块'字段:

->add('modules', 'sonata_type_collection',array(
       'by_reference' => false
 ))

最后,在ModuleSequence实体中,这是addModule方法:

     /**
     * Add modules
     *
     * @param \AppBundle\Entity\Module $module
     * @return ModuleSequence
     */
    public function addModule(\AppBundle\Entity\Module $module)
    {
        $module->setSequence($this);
        $this->modules[] = $module;

        return $this;
    }

我有"添加"按钮,我得到模态,我填写并验证。 Ajax请求被发送到分析器,但不会出现新行。

' sequence_id'没有在数据库中设置,我也不知道为什么......请问好吗?

当我使用'内联' &安培; '表'选项,id很好。

2 个答案:

答案 0 :(得分:0)

有同样的问题并通过覆盖prePersist和preUpdate方法来解决它,然后坚持关联。

public function prePersist($object)
{
    $this->persistBlocks($object);

    $content->mergeNewTranslations();
}

public function preUpdate($object)
{
    $this->prePersist($object);
}

private function persistModules($object)
{
    $em = $this->getConfigurationPool()->getContainer()->get('doctrine.orm.entity_manager');

    foreach($object->getModules() as $module)
    {
        $module->setObject($object); // change Object to the name of your Entity!!
        $em->persist($module); 
    }
}

答案 1 :(得分:0)

在这里对Sonata Admin GitHub进行了长时间的讨论后:

https://github.com/sonata-project/SonataAdminBundle/issues/4236

问题部分解决了......