默认的JUser::setParam()
方法仅将参数设置为会话。有可能以某种方式存储不在会话中的参数,它们将始终可用吗?我还在users
表字段params
中找到了它,它存储了当前用户的一些参数,但不知道如何在那里添加数据......
答案 0 :(得分:1)
添加参数后,您是否尝试过save对象?
$user = JFactory::getUser();
$user->setParam($key, $value);
$user->save;
答案 1 :(得分:0)
一种简单而舒适的方法是使用流行的Community Builder扩展程序,它允许您在管理员后端中定义自定义用户字段。它有一个API来获取CB用户对象,并写入和读取存储在数据库中而不是会话中的那些字段。简单的例子,不知道您的Joomla / CB版本(适用于Joomla 2.5和CB 1.8)以及应该执行此操作的地点(站点,管理员,外部)(假设您的参数名为customParam
且用户ID为42 ):
cbimport( 'cb.field' );
$mosCbUser = CBUser::getUserDataInstance(42);
// read value
$customParameter = $mosCbUser->customParam;
// write value
$mosCbUser->customParam = 'newnew';
$mosCbUser->store();
/* write value to DB directly with optional boolean third parameter
specifing whether to trigger the user update plugins
like onBeforeUserUpdate or onAfterUserUpdate
*/
$mosCbUser->storeDatabaseValue('cb_adresse', 'new address', false);
一定要在CB插件上下文中,如果不是这种情况,请包括例如像
global $_CB_framework, $_CB_database, $ueConfig;
$app = JFactory::getApplication();
include_once( $app->getCfg( 'absolute_path' ) . '/administrator/components/com_comprofiler/plugin.foundation.php' );