我正在努力使ajax请求更加用户友好。这是一种使用可以在一段时间内重用的令牌的场景。但是,当用户在一段时间内处于非活动状态并尝试使用该表单时,用户将观察到ajax无法正常工作但不知道为什么。我要做的就是显示信息。
使用我的测试代码,执行return new CakeResponse
似乎在blackhole中返回true,因此$result
为真,尽管不应触发用户编辑
public function beforeFilter() {
$this->Security->blackHoleCallback = 'blackhole';
}
public function blackhole($type) {
if ($this->request->is('ajax')) {
$this->log('blackhole here','debug');
return new CakeResponse(array('body'=> json_encode(array('data'=>'The request has been blackholed')),'status'=>500));
}else{
$this->log('blackhole there','debug');
return new CakeResponse(array('body'=> json_encode(array('data'=>'The request has been blackholed')),'status'=>500));
}
}
在userapp中
public function edit() {
$userId=$this->Auth->user('id');
if (empty($this->request->data)) {
$this->request->data = $this->User->read(null, $userId);
}
if ($this->request->is('ajax')) {
if($result = $this->{$this->modelClass}->edit($userId, $this->request->data)){
$this->Session->write('Auth', $this->User->read(null, $userId));
return new CakeResponse(array('body'=> json_encode(array('data'=>'saved')),'status'=>200));
}else{
return new CakeResponse(array('body'=> json_encode(array('data'=>'error')),'status'=>500));
}
}
}
进展1:
未解决,可能需要使用事件处理程序或异常,尽管它会有些复杂。在改进其他插件功能时仍在思考。