我尝试在创建经理时更改新用户的class_key值。
在onUserSave事件中触发的插件中:
<?php
$uid = $_POST['id'];
$sql = "update modx_users set `class_key` = 'extUser' where id = $uid;";
$modx->log(modX::LOG_LEVEL_ERROR, 'query = ' . $sql);
$query = $modx->query($sql);
return;
编辑现有用户时有效,但如果尝试创建新用户则无效。
有关如何做到这一点的任何想法?
创建新用户时,所有系统事件都不会触发。
答案 0 :(得分:0)
查看用户/创建处理器,您需要侦听保存新用户后触发的 OnUserFormSave 。
我尚未对此进行测试,但在您的插件中,您可以访问$modx->event
。记录 OnUserFormSave 事件的输出,希望它应该包含一个&#39;数据&#39;包含新用户对象的属性。该对象应包含新用户ID。
让我知道这是怎么回事!
<强>更新强>
我已经对此进行了测试。正如所料,您可以访问$modx->event
对象中的新用户ID,用户对象(以及更多内容):
if ($modx->event->name == 'OnUserFormSave') {
// id of user you've just created
$newUserId = $modx->event->name->params->id;
// full modUser object is available here
$newUserObj = $modx->event->name->params->user;
}
答案 1 :(得分:0)
在OnUserSave事件的插件中:
$scriptProperties['user']->set('class_key','extUser');
仅此而已。
你不能打电话
$scriptProperties['user']->save();
在其他地方的其他例子中,在OnUserSave中。