0

默认JUser::setParam()方法只为会话设置参数。是否有可能以某种方式存储不在会话中的参数,以便它们始终可用?我还在users表字段中找到params,它存储了当前用户的一些参数,但不知道如何在那里添加数据......

4

2 回答 2

1

添加参数后,您是否尝试过保存对象?

$user = JFactory::getUser();
$user->setParam($key, $value);
$user->save;
于 2013-04-19T11:45:55.733 回答
0

一种简单而舒适的方法是使用流行的Community Builder Extension,它允许您在管理员后端定义自定义用户字段。它有一个 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' );
于 2013-04-19T09:21:32.367 回答