如何在CRUD控制器中使用`postUpdate`?

时间:2016-02-21 15:27:52

标签: php sonata-admin symfony

我安装了SonataAdminBundle并为一个实体创建了自定义CRUD控制器。我希望在实体更新后执行一些操作。如何使用CRUD控制器实现这一目标?我注意到,为了这个目的,Admin*类有preUpdatepostUpdate方法,我可以使用它们,但我想,这个逻辑应该放在控制器中。

我看到它重写editAction的最简单方法(在我的控制器中覆盖此方法,从基座CRUDController复制/粘贴代码并添加调用自己的postUpdate),但复制/粘贴它的糟糕:)也许我错过了某种方式?

1 个答案:

答案 0 :(得分:1)

如果您查看使用editAction()中的奏鸣曲管理员CRUDController编写的代码,您可以看到其调用管理员的update()方法。

$object = $this->admin->update($object);

您可以在调用模型管理器之前查看sonata基本管理类中的update()方法,以便在调用模型管理器后保持对象preUpdate()调用postUpdate()的相同案例。

这意味着您尝试为您的实体实施prepost操作,您必须编写自己的逻辑,但问题是您要重做或重写任何可用操作的原因?您可以使用已提供的prepost挂钩。