2015-04-01 67 views
0

我有一个与Filemaker API(FM服务器13)交互的PHP脚本。执行脚本和返回结果

这个想法是,用户点击提交请求的网页上的一个链接,PHP触发一个生成文档的Filemaker脚本,然后用户被重定向到一个页面,在那里他们可以下载生成的文档由档案员。

作为一个侧面说明,即触发脚本执行使用“对服务器执行脚本”另一个脚本,该脚本生成的文档和文件编号返回到父(原触发)脚本。这部分似乎工作正常。生成文档,返回ID,并将文档ID存储为'ScriptResult'记录的一部分。

我不知道如何让文档ID返回到PHP。在PHP中,从执行脚本命令返回的结果对象通常有两条记录。一个是新创建的ScriptResult记录,另一个是一些随机的'ScriptResult'记录。如果我将生成新的'ScriptResult'记录的部分注释掉,出于某种原因,我仍然会得到一些随机的旧'ScriptResult'记录(我无法弄清楚这一点,它似乎是随机的,因为它会改变每个请求,似乎不是增量或任何东西。)

中的FileMaker脚本看起来像的简化版本...

Set Variable [$params, Value(Get(ScriptParameter))] 
Perform Script on Server["generate_doc" from file: "FM_File"; Parameter: $params] 
Set Variable [$result; Value:Get(ScriptResult)] 
New Record/Request 
Set Field[scriptResult::docID; $result] 
Commit Records/Requests[] 

..和我所得到的回复是一个结果对象,具有多条记录,其中之一是ScriptResult我创建了,另一个似乎是一些随机的ScriptResult。我只想要新创建的ScriptResult,以便我可以从中取出文档ID字段。

+0

FWIW,我现在的解决方法是将流程分成3个API调用。 1)在运行脚本之前创建一个新的ScriptResult对象。 2)将ScriptResult的ID传递给正在运行的脚本。运行脚本并使用ID更新ScriptResult。 3)在PHP中使用ScriptResult ID执行查找以读取结果。希望这是一个更好的解决方案。 – 2015-04-02 17:52:50

+0

只看到上面的脚本,我建议问题可能是您将整个找到的设置返回给PHP,其中包括您正在使用的记录以及“新建记录”中新创建的记录。您是否在FileMaker脚本的开头省略了所有记录?其他对尝试回答您的问题的人可能会有所帮助:您使用什么代码来触发PHP中的FileMaker脚本?你用什么代码来检索PHP中的FM记录?以上是你的整个剧本的总结吗? – pft221 2015-04-03 19:40:07

回答

1

有关FileMaker PHP API和执行FileMaker脚本的重要注意事项是当您使用PHP运行FileMaker脚本时FileMaker在脚本完成时发回找到的集合。所以你所要做的就是确保你最终找到的一组新记录就是你创建的一条1条记录,然后返回到PHP脚本。