アプリケーションの構築方法のため、 と のイベント ハンドラを作成する必要がありbeforeSaveAssociated
ますafterSaveAssociated
。これを可能にするために、AppModel.php を更新して、次の関連コードを含めました。
public function saveAssociated(array $data = null, array $options = array()) {
$this->after_save_options = NULL;
$event = new CakeEvent('Model.beforeSaveAssociated', $this, array(&$data, &$options));
$this->after_save_options = NULL;
$this->getEventManager()->dispatch($event);
if (parent::saveAssociated($data, $options)) {
if (is_array($this->after_save_options)) {
$curData = $this->data;
$this->data = $this->_tempData;
$event = new CakeEvent('Model.afterSaveAssociated', $this, $this->after_save_options);
$this->after_save_options = NULL;
$this->getEventManager()->dispatch($event);
$this->data = $curData;
}
if ($this->_tempData) {
$this->_tempData = FALSE;
}
return TRUE;
}
return FALSE;
}
public function implementedEvents() {
return array_merge(parent::implementedEvents(), array(
'Model.beforeSaveAssociated' => array(
'callable' => 'beforeSaveAssociated',
'passParams' => TRUE,
),
'Model.afterSaveAssociated' => array(
'callable' => 'afterSaveAssociated',
'passParams' => TRUE,
),
));
}
これbeforeSaveAssociated
は、モデル クラス内で定義されたものに対しては正常に機能しますが、ビヘイビアで定義するたびにトリガーされません。saveAssociated
上記をトリガー(組み込みイベント)に更新するModel.beforeSave
と、動作します。そのため、私が知る限り、動作が適切にアタッチされていないという問題はありません。
どんな助けでも大歓迎です、