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