我尝试从外部脚本插入/更新一个新用户到joomla页面。下面的代码运行得很好。然而,我需要添加或更新的用户的user_id,但脚本返回只是"useractivate"。
Joomla论坛/文档(https://github.com/joomla/joomla-cms/issues/9644)建议使用
$db->insertid();
但是我没能得到这份工作。到目前为止,我尝试了这个:
$db = JFactory::getDbo();
var_dup($db->insertid());
并得到结果:0
用户创建
<?php
define( '_JEXEC', 1 );
define('JPATH_BASE', __DIR__ );
define( 'DS', DIRECTORY_SEPARATOR );
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
$language = JFactory::getLanguage();
$language->load('com_users', JPATH_BASE);
JFactory::getLanguage()->load('mod_login', JPATH_BASE, 'de-DE', true);
$app = JFactory::getApplication('site');
$app->initialise();
require_once(JPATH_BASE.DS.'components'.DS.'com_users'.DS.'models'.DS.'registration.php');
$model = new UsersModelRegistration();
jimport('joomla.mail.helper');
jimport('joomla.user.helper');
$username = 'jimporttest';
$name = 'J Port2';
$email = 'test@test.de';
$password = 'test';
$data = array(
'username' => $username,
'name' => $name,
'email1' => $email,
'password1' => $password,
'password2' => $password,
'block' => 0
);
$return = $model->register($data);
var_dump($return);
PS:我必须使用joomla框架,不能使用简单的mysql查询,因为新用户必须激活其帐户并轻松设置新密码。
或者您可以按照创建用户时使用的用户名加载用户。
$return = $model->register($data);
if($return == 'useractivate'){
$userid = JFactory::getUser($username)->id;
}