【发布时间】:2017-04-01 02:41:51
【问题描述】:
如何获取Admin::configureListFields中的当前对象id?
$this->getSubject() 返回null
谢谢
【问题讨论】:
标签: sonata-admin symfony-sonata sonata
如何获取Admin::configureListFields中的当前对象id?
$this->getSubject() 返回null
谢谢
【问题讨论】:
标签: sonata-admin symfony-sonata sonata
根据您提出问题的方式,我假设您遇到了和我一样的问题。
因此,我的假设是:您希望使用 configureListFields 来操作列表行的内容/“当前”元素。
正如 greg0rie 指出的那样 - 这里有一个误解,因为没有“当前”元素。
特别是 - configureListFields 在迭代列表以输出之前调用,因此不存在当前元素。
此外,据我所知,没有可以覆盖的方法是在迭代列表时专门调用的。
因此,我最终做了以下事情:
首先覆盖列表中您想要更改的任何内容的树枝模板。
然后创建一个 Twig 扩展函数并传入此时应该在模板级别可用的“admin”和“object”属性:
{{ myTwigFunction(admin, object) }}
admin 是奏鸣曲管理员渲染列表的实例。
object 是当前模板。
因此,您现在可以访问当前实体对象以及处理它的奏鸣曲管理员。
然后我将其传递给服务以生成我想要进行的更改。
【讨论】:
由于列表中有许多对象,因此您的问题毫无意义。我会继续假设您是子管理员。如果是这样的话,我想你在找$this->getParent()->getSubject()->getId()
【讨论】: