2012-02-16 16 views
0

を保存するときにオブジェクトを作成します。「クライアント」「USERPROFILE」、および「sfGuardUsersを」私はテーブルを持っている私のデータベースで別の

私はシステムプロファイルとユーザーを作成したいです私は新しいクライアントを作成します。ここで私がこれまで持っているものです:のlib /フォーム/ドクトリン/ ClientForm.class.php

のactions.class.php モジュール/クライアント/アクション/中
class ClientForm extends BaseClientForm 
{ 
    public function configure() 
    { 
    parent::configure(); 

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

のlib /モデル/ドクトリンで
class clientActions extends autoClientActions 
{ 
    public function executeCreate(sfWebRequest $request) 
    { 
    parent::executeCreate($request); 
    $this->client->createProfile($request->getParameter('email'),$request->getParameter('password')); 
    } 

/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はそのユーザ名として''を持つユーザーを作成します:(

答えて

2

あなたはそれをする必要はありません。 readmeファイルを確認してください。 あなたはapp.ymlでこれを必要とする:プロファイルテーブルを定義するとき

sf_guard_plugin: 
    profile_class:  sfGuardUserProfile 
    profile_field_name: user_id 

は、そして、もちろん、あなたのDBスキーマに、あなたもsf_guard_user tableとの関係を定義する必要があります。

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

+0

私のユーザは「クライアント」でも「サプライヤ」でもかまいません。したがって、私がプロファイルクラスに持つのは、client_idとsupplier_idです。クライアントを追加すると、プロファイルを保存しなければなりません。 sfuser – Manu

+0

どのようにサプライヤかクライアントかを決めるにはどうすればいいですか?さまざまなフォーム?次にsave/doSave/updateObjectメソッド(あなたの状況によって異なります)と '$ this-> getObject() - > –

+0

はいadminsには、サプライヤを作成するフォームとクライアントを作成するフォームが用意されています。どちらも、プロファイルとsfUserを作成し、すべてのユーザーをリンクする必要があります。 – Manu

関連する問題