相关疑难解决方法(0)

如何在Sonata Admin中的嵌入式Admin类中获取子对象?

我正在尝试获取和操纵与SonataAdmin中的ImageAdmin类相关的实际对象(使用Symfony 2.3).当ImageAdmin类是唯一使用的类时,这很好.但是当ImageAdmin嵌入另一个管理员时,它出现了可怕的错误.

当您没有嵌入式管理员时,这是有效的:

class ImageAdmin extends Admin {
    protected $baseRoutePattern = 'image';

    protected function configureFormFields(FormMapper $formMapper) {
        $subject = $this->getSubject();
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当您使用以下方法在ParentAdmin中嵌入ImageAdmin时:

class PageAdmin extends Admin {
    protected function configureFormFields(FormMapper $formMapper) {
        $formMapper->add('image1', 'sonata_type_admin');
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,当您编辑ID为10的父项并在ImageAdmin中调用getSubject()时,您将获得ID为10 的图像!

换句话说,getSubject()从URL中提取id然后调用$this->getModelManager()->find($this->getClass(), $id);,它交叉引用Parent id和Image id.哎呀!


所以...我想要做的是能够掌握当前ImageAdmin实例中正在渲染/编辑的实际对象,无论是直接编辑还是通过嵌入的表单编辑,然后能够做到它.

也许getSubject()是错误的树,但我注意到$this->getCurrentChild()从ImageAdmin :: configureFormFields()调用时返回false,即使使用sonata_type_admin字段类型嵌入ImageAdmin也是如此.我很困惑......

无论如何,我希望有可能以一种我忽略的显而易见的方式抓住这个对象,这里有人可以帮助启发我!

symfony sonata-admin

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

sonata-admin ×1

symfony ×1