我在选项控制器中有以下编辑方法
public function edit($id = null) {
if (!$this->Option->exists($id)) {
throw new NotFoundException(__('Invalid option'));
}
if ($this->request->is(array('post', 'put'))) {
if ($this->Option->save($this->request->data)) {
$this->Session->setFlash(__('The option has been saved.'));
return $this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash(__('The option could not be saved. Please, try again.'));
}
} else {
$options = array('conditions' => array('Option.' . $this->Option->primaryKey => $id));
$this->request->data = $this->Option->find('first', $options);
}
}
当我尝试访问url(options / edit / 1)时,它会给我一个Error: The requested address '/cakephp/options/edit/1' was not found on this server.
的错误,以及索引视图运行正常的奇怪。
我试图跟踪错误,我发现以下代码行匹配
if (!$this->Option->exists($id)) {
throw new NotFoundException(__('Invalid option'));
}
这意味着数据库中不存在options.id
,而数据库中存在id,我多次检查
在这里你可以找到完整的错误堆栈
无效选项 错误:请求的地址' / cakephp / options / edit / 1'在这服务器上没找到。 堆栈跟踪 [内部功能]→OptionsController->编辑(字符串) CORE / Cake / Controller / Controller.php第490行→ReflectionMethod-> invokeArgs(OptionsController,数组) CORE / Cake / Routing / Dispatcher.php第191行→Controller-> invokeAction(CakeRequest) CORE / Cake / Routing / Dispatcher.php第165行→Dispatcher-> _invoke(OptionsController,CakeRequest) APP / webroot / index.php第108行→Dispatcher-> dispatch(CakeRequest,CakeResponse)
这是什么问题?
我尝试使用以下函数(exist
)更改$this->Option->findAllById($id)
函数,并且它使其工作得很好
所以问题似乎与存在的功能有关..