Sonata Admin bundle执行一对多对一连接会在第一个One-Many连接中产生空指针

时间:2012-10-14 21:02:06

标签: sonata-admin

我在Page,PageMedia和Sonata Media Bundles Media类之间有一对多的关系。 我将插入到PageMedia和Page中,但由于某种原因,页面媒体表中的页面ID始终为空。

以下是我正在尝试使用的对象的相关部分。

class Page {
   /** @ORM\OneToMany(targetEntity="PageMedia", mappedBy="page", cascade={"persist"} */
   protected $pageMedias;
}

class PageMedia {
   /** @ORM\ManyToOne(targetEntity="Page", cascade={"all"}, inversedBy="pageMedias") ) */
   protected $page;

   /** @ORM\ManyToOne(targetEntity="Application\Sonata\MediaBundle\Entity\Media", cascade={"persist"}) */
   protected $media;
}

 class PageAdmin extends Admin {
   protected function configureFormFields(FormMapper $form) {
      $form
        ->with('Media')
             ->add('pageMedias', 'sonata_type_collection', 
                  array('by_reference' => false ), array(
                 'edit'=>'inline',
                 'inline' => 'table',
                 'sortable' => 'sortOrder'
               ))
        ->end();
    }
}

class PageMediaAdmin extends Admin {
protected function configureFormFields(FormMapper $form) {
    $form->add('media', 'sonata_type_model_list',
                    array(),
            array('link_parameters'=>array('context' =>'default')));
    }
}

也许有人可以帮我解决问题?我在这里完全失去了...即使在页面和页面媒体之间添加一个可以为空的可加入的文件,我也无法插入,我错过了什么?

再次感谢。

1 个答案:

答案 0 :(得分:1)

在你的Page类中,你应该有一个“addPageMedia”方法......就像这样:

$this->pageMedias[] = $pageMedia;

你必须在

之前加上这个
$pageMedia->setPage($this)

或类似的东西! :)