我的代码遇到了最奇怪的 Cake 错误。当下面的代码调用 add() 方法(也从不同的控制器复制在这里)时,代码将他重定向回 302 找到的 HTTP 代码到 edit() 操作(本质上,对用户来说,它看起来好像什么都没有发生)。更复杂的是,当我不在该页面上时调用相同的 URL(尽管页面不相互依赖),我会被重定向到我的应用程序的基础,这会导致重定向循环。我尝试从此控制器调用其他方法(使用它们的正确参数)来查看这是否只是 add() 操作的问题,但我得到了相同的重定向循环。我已经检查了整个 SE,但找不到相关的答案。
以下是相关代码:
function edit($id=null) {
if(!$id) {
$this->Session->setFlash('Invalid!');
$this->redirect(array(
'action' => 'index')
);
}
else {
//Get the slides themselves
$slides = $this->Slide->find('all', array('conditions' => array('Slide.module_id' => $id)));
$this->set('slides', $slides);
//Get the data for the Module
$module = $this->Module->find('first',
array(
'conditions' => array (
'Module.id' => $id
),
'fields' => array(
'Module.module_name',
'Module.id')
)
);
}
}
这是 add() 代码(同样,来自不同的模块):
function add($module = null) {
if ($this->request->is('get')) {
//Set some variables for the view (this code I know works as it has been used successfully elsewhere
}
else { //User is POSTing
$this->Slide->create();
$this->Slide->save($this->data);
}
}
提前感谢大家;没有你们的支持,我做不到!
编辑:这是 AppController 代码:
public $components = array(
'Auth' => array(
'authorize' => array(
'Actions' => array('actionPath' => 'controllers')
),
'loginAction' => array(
'controller' => 'users',
'action' => 'login'
),
'authenticate' => array(
'Form' => array(
'fields' => array('username' => 'email')
)
),
'logoutRedirect' => array('/')
),
'Session'
);
public $helpers = array('Html', 'Form', 'Session');
public function isAuthorized() {
return true;
}
public function Controller() {
}
}