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

その必要はありません。readme ファイルを確認してください。でこれが必要ですapp.yml:

sf_guard_plugin:
  profile_class:      sfGuardUserProfile
  profile_field_name: user_id

もちろん、db スキーマでは、プロファイル テーブルを定義するときに、 との関係も定義する必要がありますsf_guard_user table

プラグインが残りの作業を行います (必要に応じて新しいプロファイルを追加/保存します)。

于 2012-02-16T14:30:06.000 に答える