レコードの保存時などのイベント取得でCakePHP4以前ではafterSave()とかbeforeFind()とか、そいういうメソッドをTableクラスに定義するとそこでイベントを受け取ることができました。
ですが、CakePHP5でやってみたんですが存在しないと言われてしまいます。
リファレンスにはあるって書いてあるんですよね。
https://book.cakephp.org/5/ja/orm/table-objects.html#beforefind
もちろん英語版も書いてある。
https://book.cakephp.org/5/en/orm/table-objects.html#event-list
移行ガイドにも特に言及はない。
いろいろ試行錯誤した結果、どうも、イベントを使うらしい。
ヒントがここにあった。
ということで、こんな感じに、initialize()メソッドの中で登録すればOKみたいです。。
namespace App\Model\Table;
use Cake\ORM\Table;
class MyTable extends Table
{
public $actsAs = [];
public function initialize(array $config): void
{
parent::initialize($config);
$this->getEventManager()->on('Model.afterSave', function($event, $entity){
// 保存後の処理
});
}
}
Amazon.co.jp