CakePHP 3.x模型和插件模型中的afterSave顺序?

时间:2018-03-19 13:43:41

标签: cakephp cakephp-3.0

我们有一个使用插件的CakePHP 3.x应用程序。一个插件是客户列表。

另一个插件是Complaints。

主应用程序有表格。输入主表单或添加新客户时,我们希望Complaints插件将信息收集到自己的表中:complaints_main_form,complaints_customers,complaints_customer_permissions。因此,当用户在投诉插件中创建新投诉时,投诉表单可以自动完成主表单和客户列表插件中的信息。此外,Complaints插件还有一个基于Customer类型的权限系统(来自Customer list插件),以及他们可以在Complaints系统中执行的操作。

所以我的想法是让Complaints插件提供一个适用于主app模型的行为。然后,这将监督对Customer插件模型,主应用程序表单的保存,然后可以适当填充自己的表。

[  Main App      [ Complaints.behaviour]        ]
[ Customer List ][ other plugins...][Complaints ]

客户列表是一个独立的插件,用于不同的应用程序,所以我不想触及它。

这会有用吗?可以在主app模型中使用Comlpaints.behaviour来检测插件模型之后的保存吗?应用模型中的afterSave是否称为last,那么到那时所有插件都已完成保存?或者是否有另一种方法可以根据另一个插件的更改来更新一个插件?

1 个答案:

答案 0 :(得分:1)

  

这会有用吗?可以在主app模型中使用Comlpaints.behaviour来检测插件模型之后的保存吗?应用程序模型中的afterSave是否称为last,soby那个时候所有的插件都进行了保存?或者是否有另一种方法可以根据另一个插件的更改来更新一个插件?

是的,所有这一切都是可能的。如果要控制订单,请使用事件和set a priority。检查事件的主题,如果主题是插件表对象的实例,您知道给定事件发生了什么。

https://book.cakephp.org/3.0/en/core-libraries/events.html