onUserAfterSave插件中的user-> setParam无效

时间:2013-07-22 16:05:32

标签: joomla joomla3.0

我有一个(当前正在运行的)插件,当用户注册时,它会在第三方系统上创建用户。到目前为止这个工作正常。

我现在正在尝试向用户添加一个param以存储第三方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

2 个答案:

答案 0 :(得分:0)

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

jimport( 'joomla.user.user' );

希望这会有所帮助。

答案 1 :(得分:0)

如果保存完成,则无法返回并添加,保存已完成并且门已关闭。您需要在设置参数时进行设置,方法是创建一个表单插件以向params添加另一个字段。然后你根本不需要保存,因为params只会保存为正常过程的一部分。我假设这不是需要加密的东西,对吧?这只是用户名吗?

另外我应该提一下,有Juser :: defParam($ key,$ value)可以让你通过代码添加参数。