设置从配置文件中获取的表单中的字段的值

时间:2013-06-10 16:12:36

标签: symfony1 symfony-1.4 sfguard sfdoctrineguard

我需要一些帮助来理解这是如何工作的。请参阅我正在使用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();

且无效,这是根据我的架构定义访问配置文件字段的正确方法吗?任何人都可以简单地解释一下我必须如何理解这一点,以便在事情发生变化的某一天不会产生同样的怀疑吗?

修改 我找到了解决方案,但是使用许多人认为错误的sfContext::getInstance(),所以在这种情况下,正确的方法是什么。下面的代码适用于我:

$user = sfContext::getInstance()->getUser()->getGuardUser()->getSfGuardUserProfile()->getIdempresa();

PS:我可以从SdrivingEmisorForm班级

访问

1 个答案:

答案 0 :(得分:1)

您将foreignAlias定义为SfGuardUserProfile,因此您应该将此名称用于getter。 在某些行动中:

$profile = $this->getUser()->getGuardUser()->getSfGuardUserProfile();

在某些模板中:

$profile = $sf_user->getGuardUser()->getSfGuardUserProfile();

然后:

echo $profile->getIdempresa();