我在资源ID 3中有一个块,它对ajax空模板资源id 1进行$ .post调用,其内容中包含片段调用,该调用为资源中的TV id 2分配值id 3然后成功(!)立即显示:
$id_resource = $modx->getObject('modResource', 3);
$id_tv = 2;
$value = serialize($items);
$tv = $modx->getObject('modTemplateVar',array('id'=>$id_tv));
$tv -> setValue($id_resource, $value);
$tv->save();
$res = $modx->getObject('modResource',array('id'=>$id_resource));
echo $res->getTVValue($id_tv);
但是当我尝试在1秒钟内在 [[* name_of_tv_id_2]]的同一块中创建一个setTimeout警报时,我什么都没得到。并没有什么能够获得电视价值,这似乎已经在ajax电话中成功设定。我用
尝试了一个片段[[!getTV]]$id_resource = $modx->getObject('modResource', 3);
$id_tv = 2;
$res = $modx->getObject('modResource',array('id'=>$id_resource));
echo $res->getTVValue($id_tv);
但没有。我有什么不对的想法吗?提前谢谢。
答案 0 :(得分:1)
我找到了答案。必须在其内容中使用片段调用创建另一个空模板ajax资源(需要使用pdoTools扩展来使代码段使用javascript值,即[[!custom_snippet?& post_var1 = [[!#POST.javascript_var1]]
]]),以及作为$ .post调用从块到此ajax资源执行。这是因为块中的片段在显示块之前被处理,并且在之后无法处理。