0

ユーザーの登録時にサードパーティのシステムでユーザーを作成する (現在動作中の) プラグインがあります。これは今のところうまくいっています。

サードパーティの ID を保存するためにユーザーにパラメーターを追加しようとしていますが、これは機能していないようです:

function onUserAfterSave($user,$isNew,$success,$msg=''){
        if(!$isNew || ! $success){
            return;
        }
        jimport('joomla.log.log');
        $res = someThirdPartyCall();
        //Res is valid here
        JLog::add("Res  ".print_r($res,true), JLog::WARNING, 'jerror');


        $userOb = JUser::getInstance($user['id']);
        $userOb->setParam('sugarid', $res['id']);
        //User ob is valid here
        JLog::add("UserOb  ".print_r($userOb,true), JLog::WARNING, 'jerror');
        $saveRes = $userOb->save();

         //Result is true. Error array is empty.
        JLog::add("Result ".print_r($saveRes,true), JLog::WARNING, 'jerror');
        JLog::add("Errors ".print_r($userOb->getErrors(),true), JLog::WARNING, 'jerror');

    }

すべてが見栄えがよく、エラーなどはありません。機能しない唯一のことは、パラメーターがデータベースに設定されていないことです。これは、ユーザーを に保存しようとしているからonUserAfterSaveですか?

4

2 に答える 2

0

使用するプラグインにユーザー ライブラリをインポートするのを忘れましたsetParam。そのため、ファイルの先頭にユーザー ライブラリを含めることを忘れないでください。このコード行を使用します。

jimport( 'joomla.user.user' );

これが役立つことを願っています。

于 2013-07-22T18:40:27.333 に答える
0

保存が完了したら、戻って追加することはできません。保存が完了し、ドアが閉じられます。パラメータに別のフィールドを追加するフォームプラグインを作成して、パラメータを設定するときに設定を行う必要があります。params は通常のプロセスの一部として保存されるだけなので、保存する必要はまったくありません。これは暗号化する必要がないものだと思いますよね?ユーザー名だけですか?

また、コードを介してパラメーターを追加できる Juser::defParam($key, $value) があることにも言及する必要があります。

于 2013-07-22T19:07:59.753 に答える