2015-04-01 65 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腳本。