ここで非常に奇妙なことが起こっています。ID が存在するかどうかにかかわらず、AppController の beforeFilter() 関数をチェックインします。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 の出力には、オブジェクト データが含まれており、完全に正しいものです。問題がわかりません:/
手伝って頂けますか?
ありがとう。