我在这里发生了一件非常奇怪的事情。我检查了 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 的输出包含对象数据并且是绝对正确的。我没有看到问题:/
你能帮助我吗?
谢谢。