我遇到了afterDelete回调方法的问题。我不能用它们。
在我的一个“存储”插件控制器中,我想要删除一条记录,之后我想做一些其他的想法,但是没有达到回调方法。我通过在afterDelete()回调方法中添加一条日志消息来检查这一点。
这是我删除记录的控制器:
namespace Storages\Controller;
class StoragecontainerBlocksController extends AppController {
public function initialize() {
parent::initialize();
$this->loadComponent('RequestHandler');
}
public function ajaxDeleteBlockElement() {
$this->autoRender = false;
// load model
$this->loadModel("StoragecontainerBlockElements");
// get element id
$elementId = $this->request->data('id');
$this->request->allowMethod(['post', 'delete']);
// delete element
$storagecontainerBlockElement = $this->StoragecontainerBlockElements->get($elementId);
$this->StoragecontainerBlockElements->delete($storagecontainerBlockElement);
}
}
这是定义了afterDelete回调的(模型)表:
use Cake\Log\Log;
class StoragecontainerBlockElementsTable extends Table {
public function afterDelete(Event $event) {
Log::debug('Got here');
}
}
更新
当我在ajaxDeleteBlockElement函数中调试Log::debug($this->StoragecontainerBlockElements);
时,我在debug.log文件中得到了以下数组:
2017-03-31 07:03:48 Debug: Cake\ORM\Table Object
(
[registryAlias] => StoragecontainerBlockElements
[table] => storagecontainer_block_elements
[alias] => StoragecontainerBlockElements
[entityClass] => \Cake\ORM\Entity
[associations] => Array
(
)
[behaviors] => Array
(
)
[defaultConnection] => default
[connectionName] => default
更新
namespace Storages\Model\Table;
use Cake\ORM\RulesChecker;
use Cake\ORM\Table;
use Cake\Validation\Validator;
use Cake\Log\Log;
class StoragecontainerBlockElementsTable extends Table {
public function initialize(array $config) {
parent::initialize($config);
}
public function afterDelete(Event $event) {
Log::debug('Got here');
}
}
答案 0 :(得分:1)
从调试结果中可以看出,$this->StoragecontainerBlockElements
不是你想象的那样,它是一个所谓的“自动表”或“通用表”,即{{1}的实例而不是其具体的子类。
由于某种原因无法找到/加载您的\Cake\ORM\Table
类/文件,因此回退到StoragecontainerBlockElementsTable
。
另见
答案 1 :(得分:0)
尝试
use Cake\Log\Log;
use Cake\ORM\Table;
class StoragecontainerBlockElementsTable extends Table {
public function afterDelete($event, $entity, $options){
Log::debug('Got here');
}
}
详情Here