0

ここで非常に奇妙なことが起こっています。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 の出力には、オブジェクト データが含まれており、完全に正しいものです。問題がわかりません:/

手伝って頂けますか?

ありがとう。

4

1 に答える 1

0

さて、エラーが発生しました...

開いたURLにデータベース接続エラーなどの他のエラーがある場合、コードは単に機能しません。説明するのは難しいですが、上記のコードを削除して URL を開くと、次のようなエラーが発生しました。

データベースエラー

エラー: SQLSTATE[42000]: 構文エラーまたはアクセス違反: 1064 SQL 構文にエラーがあります。1行目の「isAdmin」の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください

そのバグを修正すると、上記のコードは正常に動作します。

于 2012-06-21T10:16:56.760 に答える