我在这里发生了一件非常奇怪的事情。我检查了AppController的beforeFilter()函数,是否存在id。它在我打开url / project / user / 1时有效,但是当我打开/ project / user / edit / 1时它表示我在非对象上使用了一个函数。我已经检查过我是否真的这样做了,但我不知道。我用pr()输出值,它显示了对象内容。
这是我的beforeFilter()函数:
$request = $this->request;
if (isset($request->params['id'])) {
$model = Inflector::singularize(ucfirst($request->params['controller']));
$cond = array('conditions' => array($model . '.id' => $request->params['id']));
pr($this->{$model});
exit;
if (!$this->{$model}->find('first', $cond)) {
$this->Session->setFlash(__('Invalid id.'), 'flash_notice');
$this->redirect(array(
'manager' => (bool)$request->params['manager'],
'controller' => 'tournaments',
'action' => 'index'
));
}
}
在执行id条件之前,$ model的输出包含对象数据,并且绝对正确。我没有看到问题:/
你能帮助我吗?
感谢。
答案 0 :(得分:0)
好的,我收到了错误......
当您打开的URL出现其他错误(例如数据库连接错误)时,代码就不起作用了。我很难解释,但是当我删除上面的代码并打开我的URL时出现了这样的错误:
数据库错误
错误:SQLSTATE [42000]:语法错误或访问冲突:1064您 您的SQL语法有错误;检查对应的手册 您的MySQL服务器版本,以便在“isAdmin”附近使用正确的语法 在第1行
当我修复该错误时,上面的代码工作正常。