これがどのように機能するかを理解するために、ここで助けが必要です。sfDoctrineGuardPlugin
次のようにプロファイルテーブルを使用して追加することを参照してください。
SfGuardUserProfile:
connection: doctrine
tableName: sf_guard_user_profile
columns:
id: { type: integer(8), primary: true }
user_id: { type: integer(8), primary: false }
idempresa: { type: integer(4), primary: false }
relations:
User:
local: user_id
class: sfGuardUser
type: one
foreignType: one
foreignAlias: SfGuardUserProfile
onDelete: CASCADE
onUpdate: CASCADE
次に、ログインしたユーザーに基づいてフィールド値を設定する必要があります。SdrivingEmisorForm
そのためには、にアクセスする必要がありますが、idempresa
方法sf_guard_user_profile
がわかりません:-(私はこれをすべて試しました:
$user = sfContext::getInstance()->getUser();
echo $user->getGuardUser()->getProfile()->getIdempresa();
echo $this->getUser()->getGuardUser()->getProfile()->getIdempresa();
echo $user->getProfile()->getIdempresa();
私のスキーマ定義に基づいてプロファイルフィールドにアクセスする正しい方法はどれですか? いつか状況が変わった場合に同じ疑いを抱かないようにするために、これをどのように理解する必要があるかを簡単に説明してもらえますか?
EDIT
私は解決策を見つけましたが、sfContext::getInstance()
多くの人が間違っていると言っているので、この場合、これを行う正しい方法は何ですか. 以下のコードは私のために機能します:
$user = sfContext::getInstance()->getUser()->getGuardUser()->getSfGuardUserProfile()->getIdempresa();
PS:私はSdrivingEmisorForm
クラスからアクセスしています