我正在使用CakeDC的utils包中的Soft Delete - Behavior (https://github.com/CakeDC/utils)
现在的问题是:我想检查控制器是否软件(已删除),如下所示:
<?php
if ($this->User->delete($id)) {
$this->Session->setFlash(__('user has been deleted'));
} else {
$this->Session->setFlash(__('user has not been deleted'));
}
?>
不幸的是,我的结果出错了。意味着如果用户被(软)删除,我将得到'用户未被删除'消息,反之亦然。
我知道Cake如何处理此请求,而beforeDelete挂钩必须返回false,以停止(硬)删除数据。但是在github上引用这个issue,现在应该修复它。 我是唯一一个不起作用的人吗?
除了简单地否定这个问题外,还有其他解决方法吗? (不想这样做,它只是不对)
提前致以问候和谢意!答案 0 :(得分:0)
我使用的解决方案是一半复制,一半是从@mark链接到的线程写的。
将其添加到您的AppModel
/**
* Override the delete() model method so that we can account for the
* SoftDelete behaviours return
*
* @param int $id
* @param bool $cascade
* @return bool
*/
public function delete($id = null, $cascade = true) {
$result = parent::delete($id, $cascade);
if ($result === false && $this->Behaviors->enabled('SoftDelete')) {
return $this->field('deleted', array('deleted' => 1));
}
return $result;
}
请注意使用行为default
设置的此代码段。这就是为什么我使用'deleted' => 1
如果您以不同的方式命名您的字段,那么您将要更改此字段。