在BPM应用程序ProcessMaker中,我试图将dynaform中的一个网格中的行复制到第二个dynaform中的后续网格。我只想复制检查复选框的第一个网格中的行。用户无需查看未选中的行。
我尝试在后续网格之前运行触发器并循环遍历第一个网格,并检查行的复选框已打开的位置但似乎没有复制任何内容。 以下是触发器的代码。我究竟做错了什么?
@=new_grid = array();
$tot = count(@=original_grid);
for ($i = 1; $i <= $tot; $i++) {
if ((@=original_grid[$i]['my_checkbox']) == 'On') {
@=new_grid[$i] = array(
'field1' = @=original_grid[$i]['field1'],
'field2' = @=original_grid[$i]['field2'],
'field3' = @=original_grid[$i]['field3'],
'field4' = @=original_grid[$i]['field4'],
'field5' = @=original_grid[$i]['field5'],
'field6' = @=original_grid[$i]['field6']
);
}
}
答案 0 :(得分:0)
是否使用=
而不是=>
将变量赋值给数组中的字段。与'field1' => @=original_grid[$i]['field1'],
您可以使用退出结束触发器并在此之前添加一些回声。同样在流程设计器中,您可以启用调试器。通过这种方式,您可以在运行流程时查看具有值的变量。此外,您还可以查看是否触发了触发器以及是否存在任何错误。
答案 1 :(得分:0)
这个花了一段时间才弄明白。事实证明,我的触发器放在错误的位置。我需要在推导/路由后放置触发器。以下是我最终使用的修订代码:
$newGrid = max(array_keys(@=newGrid));
$i = 0;
foreach(@=newGrid as $r){
if($r['my_checkbox'] == "On")
{
$i = $i + 1;
@=newGrid[$newGrid + $i] = $r;
}
}