我尝试从外部脚本向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-framework并且不能使用简单的mysql查询,因为新用户必须激活其帐户并轻松设置新密码。
答案 0 :(得分:1)
或者,您可以根据用于创建用户的用户名加载用户。
$return = $model->register($data);
if($return == 'useractivate'){
$userid = JFactory::getUser($username)->id;
}