CakePHP 3.6-在Shell / Command中触发事件

时间:2018-11-12 09:48:33

标签: cakephp cakephp-3.x

我需要在Controller和Command中执行相同的代码(开始计算)。因此,我想为此使用一个事件,但是我不知道如何在Command中触发事件。 有可能这样做还是有更好的方法呢?

2 个答案:

答案 0 :(得分:0)

我找到了一个简单的解决方案...

$table = TableRegistry::getTableLocator()->get('Calculations');
$eventManager = $table->getEventManager();

$event = new Event('Calculation.execute', $table, ['calculation' => $calculation]);
$eventManager->dispatch($event);

我使用TableClass来获取Eventmanger。

答案 1 :(得分:0)

更好的方式:

<?php
use Cake\Event\Event;
use Cake\Event\EventManager;

// ...
$event = new Event('CustomEvent.example', null, ['Pass this', 'Data to event listener']);
$em = new EventManager();
$em->dispatch($event);