我正在尝试创建一个插件,该插件将获取列表框电视的价值并设置文档的创建的字段,以匹配该电视的设置 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;
}
答案 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