如何在插入/更新(新)用户时从Joomla-Framework返回user_id

时间:2016-09-18 14:40:36

标签: joomla joomla-framework

我尝试从外部脚本向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查询,因为新用户必须激活其帐户并轻松设置新密码。

1 个答案:

答案 0 :(得分:1)

或者,您可以根据用于创建用户的用户名加载用户。

$return = $model->register($data);
if($return == 'useractivate'){
    $userid = JFactory::getUser($username)->id;
}