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



我尝试从外部脚本插入/更新一个新用户到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;
}

相关内容

  • 没有找到相关文章

最新更新