我需要一些帮助来了解这是如何工作的。请参阅我正在使用sfDoctrineGuardPlugin
并添加一个 Profile 表,如下所示:
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();
并且没有工作,这是根据我的架构定义访问配置文件字段的正确方法?任何人都可以简要解释一下我必须如何理解这一点,以便在有一天事情发生变化时不会产生同样的疑问?
编辑
我找到了解决方案,但是使用sfContext::getInstance()
which many say 是错误的,所以在这种情况下,正确的方法是什么。下面的代码对我有用:
$user = sfContext::getInstance()->getUser()->getGuardUser()->getSfGuardUserProfile()->getIdempresa();
PS:我是从SdrivingEmisorForm
课堂上访问的