问题描述
我刚刚开始阅读cakephp 3文档(我一直在使用cake 2.x进行开发),并且希望将某些网站从2.x迁移到3。在我的 AppModel
我有一些回调,尤其是 beforeFind
和 beforeSave
,其中包含一些有关几乎所有表的逻辑在数据库中。
I just started reading cakephp 3 docs (I have been developing with cake 2.x for some time) and want to migrate some website from 2.x to 3. In cake 2 in my AppModel
I have some callbacks, particularly beforeFind
and beforeSave
, that contain some logic concerning almost all tables in a database.
现在蛋糕3中没有 AppModel
,我该怎么做?我能想到的最好的方法是将该代码放入某些行为的回调中,但是我有30个模型,是否应该一一加载所有模型中的行为?
Now in cake 3 there is no AppModel
, how do I get the same thing done ? The best I can think of is to put that code in some behavior's callbacks, but I have like 30 models, should I load the behavior in all models one by one ?
谢谢
推荐答案
使用事件监听器监听事件 Model.beforeSave
, Model.beforeFind
和 Model.initialize
并在此应用您想要执行的任何操作。 和。
Use an event listener that listens to the events Model.beforeSave
, Model.beforeFind
and Model.initialize
and apply whatever you want to do there. Read the chapter about events and the documentation for table callbacks.
use Cake\Event\EventListenerInterface;
use Cake\Event\Event;
class SomeListener implements EventListenerInterface
{
public function implementedEvents()
{
return [
'Model.beforeFind' => 'beforeFind',
];
}
public function beforeFind(Event $event, Query $query, ArrayObject $options, boolean $primary)
{
// Your code here
}
}
并将其附加到 事件管理器。现在它将监听 all 表对象的回调。
And attach it to the global event manager. It will now listen to the callbacks of all table object.
这篇关于Cakephp 3回调,所有模型的行为的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!