后端 sfGuardUser 模块

发布于 2024-11-13 18:51:49 字数 2804 浏览 4 评论 0原文

我使用 symfony 1.4.11 和 Doctrine

我在后端有 sfGuardUser 模块。我有 sfGuardUserProfile 表。

sfGuardUserProfile:
  connection: doctrine
  tableName: sf_guard_user_profile
  columns:
    id:            { type: integer(4), primary: true, autoincrement: true }
    user_id:       { type: integer(4), notnull: true }
    salutation:    { type: string(10), notnull: true }
    first_name:    { type: string(30), notnull: true }
    last_name:     { type: string(30), notnull: true }
    country:       { type: string(255), notnull: true }
    postcode:      { type: string(10) , notnull: true }
    city:          { type: string(255), notnull: true }
    address:       { type: string()   , notnull: true }
    phone:         { type: string(50) }
    email:         { type: string(255), notnull: true }
    validate:      { type: string(17) }
    banned:        { type: boolean, default: 0 }
    payed_until:   { type: datetime, notnull: true}
  relations:
     User:
      class: sfGuardUser
      foreign: id
      local: user_id
      type: one
      onDelete: cascade
      onUpdate: cascade
      foreignType: one
      foreignAlias: Profile
  indexes:
    user_id_unique:
      fields: [user_id]
      type: unique

SfGuardUser 表:

GuardUser:
  actAs: [Timestampable]
  columns:
    id:
      type: integer(4)
      primary: true
      autoincrement: true
    username:
      type: string(128)
      notnull: true
      unique: true
    algorithm:
      type: string(128)
      default: sha1
      notnull: true
    salt: string(128)
    password: string(128)
    is_active:
      type: boolean
      default: 1
    is_super_admin:
      type: boolean
      default: false
    last_login:
      type: timestamp
  indexes:
    is_active_idx:
      fields: [is_active]
  relations:
    groups:
      class: sfGuardGroup
      local: user_id
      foreign: group_id
      refClass: sfGuardUserGroup
      foreignAlias: Users
    permissions:
      class: sfGuardPermission
      local: user_id
      foreign: permission_id
      refClass: sfGuardUserPermission
      foreignAlias: Users

我有下一个 sfGuardUserForm:

  public function configure()
  {

      parent::configure();

  $profileForm = new sfGuardUserProfileForm($this->object->Profile);
  unset($profileForm['user_id'],$profileForm['banned'],$profileForm['validate'],$profileForm['payed_until']);


     $profileForm->widgetSchema['salutation'] = new weWidgetSalutationI18n();
       $profileForm->widgetSchema['country'] = new sfWidgetFormI18nChoiceCountry();
       $profileForm->setDefault('country', 'DE');
  $this->embedForm('Profile', $profileForm);

  }

因此,当我从后端添加新用户时,在我的 sfGuardUserProfile 表中 user_id = 0 ...

I use symfony 1.4.11 with Doctrine

I have sfGuardUser module in backend. I have sfGuardUserProfile table.

sfGuardUserProfile:
  connection: doctrine
  tableName: sf_guard_user_profile
  columns:
    id:            { type: integer(4), primary: true, autoincrement: true }
    user_id:       { type: integer(4), notnull: true }
    salutation:    { type: string(10), notnull: true }
    first_name:    { type: string(30), notnull: true }
    last_name:     { type: string(30), notnull: true }
    country:       { type: string(255), notnull: true }
    postcode:      { type: string(10) , notnull: true }
    city:          { type: string(255), notnull: true }
    address:       { type: string()   , notnull: true }
    phone:         { type: string(50) }
    email:         { type: string(255), notnull: true }
    validate:      { type: string(17) }
    banned:        { type: boolean, default: 0 }
    payed_until:   { type: datetime, notnull: true}
  relations:
     User:
      class: sfGuardUser
      foreign: id
      local: user_id
      type: one
      onDelete: cascade
      onUpdate: cascade
      foreignType: one
      foreignAlias: Profile
  indexes:
    user_id_unique:
      fields: [user_id]
      type: unique

SfGuardUser table:

GuardUser:
  actAs: [Timestampable]
  columns:
    id:
      type: integer(4)
      primary: true
      autoincrement: true
    username:
      type: string(128)
      notnull: true
      unique: true
    algorithm:
      type: string(128)
      default: sha1
      notnull: true
    salt: string(128)
    password: string(128)
    is_active:
      type: boolean
      default: 1
    is_super_admin:
      type: boolean
      default: false
    last_login:
      type: timestamp
  indexes:
    is_active_idx:
      fields: [is_active]
  relations:
    groups:
      class: sfGuardGroup
      local: user_id
      foreign: group_id
      refClass: sfGuardUserGroup
      foreignAlias: Users
    permissions:
      class: sfGuardPermission
      local: user_id
      foreign: permission_id
      refClass: sfGuardUserPermission
      foreignAlias: Users

I have next sfGuardUserForm:

  public function configure()
  {

      parent::configure();

  $profileForm = new sfGuardUserProfileForm($this->object->Profile);
  unset($profileForm['user_id'],$profileForm['banned'],$profileForm['validate'],$profileForm['payed_until']);


     $profileForm->widgetSchema['salutation'] = new weWidgetSalutationI18n();
       $profileForm->widgetSchema['country'] = new sfWidgetFormI18nChoiceCountry();
       $profileForm->setDefault('country', 'DE');
  $this->embedForm('Profile', $profileForm);

  }

So, when I add new user from backend, in my sfGuardUserProfile table user_id = 0 ...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

爱给你人给你 2024-11-20 18:51:49

尝试一下这是否适合您:

public function configure()
{
   parent::configure();
   $profile = new sfGuardUserProfile();
   $profile->setUserId($this->getObject()->id);
   $profileForm = new sfGuardUserProfileForm($profile);
   $this->embedForm('Profile', $profileForm);
}

Try if this works for you:

public function configure()
{
   parent::configure();
   $profile = new sfGuardUserProfile();
   $profile->setUserId($this->getObject()->id);
   $profileForm = new sfGuardUserProfileForm($profile);
   $this->embedForm('Profile', $profileForm);
}
时光沙漏 2024-11-20 18:51:49

我不太确定,但从我的角度来看,这是因为您取消了 user_id 值。

I'm not really sure, but form the top of my head it's because you unset the user_id value.

桃扇骨 2024-11-20 18:51:49

首先想到的是:

  • 阅读此内容 (定义主键,关键字是primaryKey: true而不是primary: true,并且不需要定义为自增,ORM可以自己猜测)
  • 不要取消设置user_id或表单的任何id,它们默认是隐藏的所以这应该不是问题。

检查这些点,看看问题是否仍然存在,如果是这样,我可能会在更改架构时未正确更新某些内容(请记住每次修改架构时始终清除缓存并构建所有类)

希望这会有所帮助!

Somethings that first came to mind are:

  • Read this (to define a primary key, the keyword is primaryKey: true not primary: true and they dont need to be defined as autoincremental, ORM can guess it for himself)
  • Dont unset the user_id or any ids of forms , they are hidden by default so that should not be a problem.

Check those poitns and see if he problem persist, if so i cuold be something not properly updated when changing the schema (remember always clearing cache and building all classes every time you modify your schema)

Hope this helps!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文