我安装了SonataAdminBundle
并为一个实体创建了自定义CRUD控制器。我希望在实体更新后执行一些操作。如何使用CRUD控制器实现这一目标?我注意到,为了这个目的,Admin*
类有preUpdate
和postUpdate
方法,我可以使用它们,但我想,这个逻辑应该放在控制器中。
我看到它重写editAction
的最简单方法(在我的控制器中覆盖此方法,从基座CRUDController
复制/粘贴代码并添加调用自己的postUpdate
),但复制/粘贴它的糟糕:)也许我错过了某种方式?
答案 0 :(得分:1)
如果您查看使用editAction()
中的奏鸣曲管理员CRUDController
编写的代码,您可以看到其调用管理员的update()
方法。
$object = $this->admin->update($object);
您可以在调用模型管理器之前查看sonata基本管理类中的update()
方法,以便在调用模型管理器后保持对象preUpdate()
调用postUpdate()
的相同案例。
这意味着您尝试为您的实体实施pre
或post
操作,您必须编写自己的逻辑,但问题是您要重做或重写任何可用操作的原因?您可以使用已提供的pre
或post
挂钩。