如何在新创建VIA管理器时更改modx革命用户class_key?

时间:2014-09-24 02:18:04

标签: modx-revolution

我尝试在创建经理时更改新用户的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;

编辑现有用户时有效,但如果尝试创建新用户则无效。

有关如何做到这一点的任何想法?

创建新用户时,所有系统事件都不会触发。

2 个答案:

答案 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中