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

如果保存完成你不能回去添加它,保存完成并关上门。在设置参数时,您需要通过制作表单插件向参数添加另一个字段来进行设置。然后你根本不需要保存,因为参数只会作为正常过程的一部分保存。我假设这不是需要加密的东西,对吧?只是用户名?

另外我应该提到的是 Juser::defParam($key, $value) 可以让您通过代码添加参数。

于 2013-07-22T19:07:59.753 回答
0

您忘记将用户库导入到您的插件中以使用setParam. 所以在文件的开头不要忘记包含用户库。使用这行代码。

jimport( 'joomla.user.user' );

希望这会有所帮助。

于 2013-07-22T18:40:27.333 回答