Modx插件:设置由资源创建以匹配电视价值

时间:2014-04-22 23:51:04

标签: php modx modx-revolution xpdo

我正在尝试创建一个插件,该插件将获取列表框电视的价值并设置文档的创建的字段,以匹配该电视的设置 onDocFormSave < / em>的。电视会自动填充所有活跃用户并输出他们的ID。

我有以下插件代码,但是当我尝试保存任何资源时,它只是挂起而永远不会保存。 setCreatedBy 是列表框电视的名称:

switch ($modx->event->name) {
    case 'onDocFormSave':

        $created_by = $resource->getTVValue('setCreatedBy')

        if ($resource->get('createdby') != $created_by) {  
            $modx->resource->set('createdby', $created_by));
        }
    break;
}

3 个答案:

答案 0 :(得分:1)

未测试。

看起来设置也必须在资源上完成,而不是通过Modx类。

$resource->set('createdby', $created_by); // You also have a ) too much in your code.

检查了docs

答案 1 :(得分:0)

如果省略$ resource-&gt;设置...并运行插件,它会通过吗?我想知道你是否可能造成循环,即$ resource-&gt; set触发另一个onDocFormSave。你有权访问服务器error.log吗?它可能包含任何崩溃的内容。

答案 2 :(得分:0)

Modx论坛上的人能够给我一个支持。

switch ($modx->event->name) {
case 'OnDocFormSave':

    $created_by = $resource->getTVValue('setCreatedBy');

    if (!empty($created_by) && $resource->get('createdby') != $created_by) {
        $resource->set('createdby', $created_by);
        $resource->save();
    }
break;}

作为参考,我处理收集Modx用户的姓名和用户ID并将其放入选择框电视的方式是在@EVAL绑定中使用Peoples片段:

@EVAL return $modx->runSnippet('Peoples',array('tpl'=>'peoplesTpl','outputSeparator'=>'||','active'=>'1'));

这是一种琐碎而又缓慢的做事方式,但要求将此作为Modx资源的标准字段已提交给GitHub