我试图通过检查group_id来保护管理员免于意外删除CakePHP 2.4中的对方。我尝试使用以下删除方法,但它仍然删除用户,不重定向。如何返回用户的group_id,然后重定向并显示“管理员无法删除”的相应闪存?
public function delete($id = null) {
if (!$this->request->is('post')) {
throw new MethodNotAllowedException();
}
$this->User->id = $id;
if (!$this->User->exists()) {
throw new NotFoundException(__('Invalid user'));
}
if ($user['User']['group_id'] == 1) { //Check user group
$this->Session->setFlash(__('Administrators can not be deleted'), 'flash/error');
$this->redirect(array('action' => 'index'));
}
if (!$this->User->delete()) {
$this->Session->setFlash(__('User could not be deleted'), 'flash/error');
$this->redirect(array('action' => 'index'));
}
if ($this->User->delete()) {
$this->Session->setFlash(__('User deleted'), 'flash/success');
$this->redirect(array('action' => 'index'));
}}
答案 0 :(得分:1)
您的代码中有拼写错误 - 将=
更改为==
;那么你的if语句不应该一直评估为真
if ($user['User']['group_id'] == '1')
Session是一个组件(Controller层的一部分)或一个帮助器(View层的一部分) - 它不打算在Model中使用,也不应该在模型中使用,通常。而redirect()只是一个控制器方法。只需让beforeDelete返回false,然后在你的控制器中检查删除是否失败(即它返回false),如果是,则显示你的错误flash消息,并重定向。