0

在我的数据库中,我有以下表格:“clients”“userProfile”“sfGuardUsers”

我希望系统在创建新客户端时创建配置文件和用户。这是我到目前为止所拥有的:

lib/form/doctrine/ClientForm.class.php

class ClientForm extends BaseClientForm
{
  public function configure()
  {
    parent::configure();

    $userProfileForm = new UserProfileForm($this->object->UserProfile->user);
    $this->mergeForm($userProfileForm);
  }
}

modules/client/action/actions.class.php

class clientActions extends autoClientActions
{
  public function executeCreate(sfWebRequest $request)
  {
    parent::executeCreate($request);
    $this->client->createProfile($request->getParameter('email'),$request->getParameter('password'));
  }

lib/model/doctrine/Client.class.php

  public function createProfile($email, $password)
  {
    $profil = Doctrine_Core::getTable('UserProfile')->findOneByClientId($this->getId());
    $profil->createUser($email, $password);
    $profil->setClient($this);
    $profil->save();
  }

根据日志,createProfile(null, null)被调用,mysql创建一个用户''作为其用户名:(

4

1 回答 1

2

你不需要这样做。检查自述文件。你需要这个app.yml

sf_guard_plugin:
  profile_class:      sfGuardUserProfile
  profile_field_name: user_id

当然,在您的数据库模式中,当定义配置文件表时,您还需要定义它与sf_guard_user table.

该插件将为您完成其余的工作(在需要时添加/保存新配置文件)。

于 2012-02-16T14:30:06.000 回答