2

すべてのアクション/テンプレートでアクセスできる symfony セッション変数をセットアップしようとしています。これは、ユーザー資格情報が検証され、ユーザーが認証された後、ホームページにリダイレクトされる前に行われます。

コードは次のようになります。

// Authentication verified 

$this->getUser()->setAuthenticated(true);
// note I am deliberately using a static value
$this->getUser()->setAttribute('userid',"4"); 
$this->redirect('flashcard/index');  

次のように、アクションの 1 つでこの属性を取得しようとすると、次のようになります。

$this->getUser()->getAttribute('userid')null を返します。

私はこのように取りますvar_dump

var_dump($this->getUser()->getAttributeHolder()->getAll());

空の配列を返します。これは、何かが正しくないことを意味します。

注意点として、私はログイン認証に sfDoctrineGuard を使用していませんが、セッション変数の設定がそれと関係があるとは思いません。

4

1 に答える 1

2

エラーの内容はわかりませんが、コードを改善してデバッグするためのいくつかの提案を次に示します。

1 - カスタム関数をユーザー クラスに追加して、$this->getUser()->setMyVariable(4)、$this->getUser()->getMyVariable()、$this->getUser() を呼び出すようにします。 ->isMyVariableDefined()... 名前と名前空間のタイプミスを避けることができます...

2 - 念のため名前空間を追加します (ユーザー ID などの一般的な名前の競合を避けるため)...

そんな感じ:

public function setMyVariable($value = null)
{
  $this->setAttribute('user_id', $value, 'some_namespace');
}

3 - ユーザーがログインしたら、デバッグ バーを使用してユーザー属性を確認します。コーディングする必要はありません。そこにある場合は、いつ消えるかを確認してください...

于 2013-01-01T03:55:09.300 に答える