2011-06-06 79 views
0

我使用symfony 1.4.11与Doctrine后端sfGuardUser模块

我在后端有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 ..

回答

1

尝试,如果这对你的作品:

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

谢谢,但它是行不通的(我可以添加新的用户,但在我的形式我有:'注意:未定义的属性:sfGuardUserAdminForm :: $ id在' – denys281 2011-06-07 17:46:21

+0

我的错,更正了答案。 – Dziamid 2011-06-08 08:57:22

+0

谢谢!但它不工作...我找到问题的根源....我使用sfSocialPlugin,并且我编辑'lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardUser.php'并设置类扩展 'sfSocialGuardUser'而不是'PluginsfGuardUser'。对'sfGuardUserTable'做同样的事情,使它扩展'sfSocialGuardUserTable' ...当我默认情况下它都可以......嗯...... – denys281 2011-06-08 09:21:58

0

我不太确定,但形成我的顶部这是因为你没有设置user_id的值。首先浮现在脑海

+0

当我删除未设置($ USER_ID),我要添加新的用户,我有外地的用户,在那里我可以选择现有的用户。 – denys281 2011-06-06 16:05:55

+0

您可以使用$ profileForm = new sfGuardUserProfileForm($ this-> object-> Profile)选择您的现有用户; – Arend 2011-06-06 16:34:55

+0

@guiman我试图用这个模式和形式在其他symfony项目中做到这一点,它是一切ok.But有sfDoctrineGuardPlugin 5.0 – denys281 2011-06-07 08:34:08

0

出头是:

  • Read this(定义主键,关键字是PrimaryKey的:真不是主要的:真实,他们不需要被定义为自动增加的,ORM可以猜到它为自己)
  • 不要取消设置user_id或窗体的任何ID,他们默认情况下隐藏,所以不应该是一个问题。

检查这些poitns,看他的问题仍然存在,如果是这样我cuold是什么改变架构时(永远记住清除缓存和每次修改您的架构建立的所有类)不能正常更新

希望这有助于!