是否可以在没有会话的情况下在joomla中设置用户参数?

时间:2013-04-18 11:46:15

标签: joomla joomla2.5

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

2 个答案:

答案 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' );