0

AppController で $this->Auth->user('id') を使用すると、特定の問題に行き詰まりました。次のエラーが返されます: エラー: null のメンバー関数 user() への呼び出し

今私がやりたいことは、すべての人に適切なプロフィールを取得するよう強制したいということです。そこで、AppController で関数 forceprofile() を作成しました。この関数を AppControllers beforefilter-function で実行するように依頼します。したがって、毎回実行されます。プロファイルがない場合、ユーザーは forceprofile-function からフォームにリダイレクトされ、そこでプロファイルを保存できます。

この forceprofile-function の最初のコード行で、いくつかのコメントの直後に、UserID を変数に取ります。

$userid = $this->Auth->user('id');

ここでエラーが発生します。

そこで何が起こったのかを確認したかったので、行を次のように置き換えました

debug($this->Auth->user('id')); die;

結果は次のとおりです。

int(1)

実際、私はそこで非常に適切な結果を得ています。

元の障害のスタックは、有用な情報を提供しませんでした。コンテキストやコードなしで [内部関数] を出力するだけです...そして、BaseErrorHandler を出力します。

debug() が適切な結果を返し、id を変数に割り当てるように要求しないのはなぜですか?

ご協力ありがとうございました。

4

1 に答える 1

2

私は今、自分で問題を解決しました。

複数のコントローラーのロード、コールバックの実行、セルの使用などのために、関数が複数回呼び出されました。この forceprofile 関数の呼び出しを AppController::initialize() に移動しました。解決しました。

それでも、同じコード double を実行しても (意図せずとも)、同じ変数が使用されない理由は不明です。

于 2015-10-28T14:49:49.397 に答える