Filemaker: скрипт, который вызывает код PHP - PullRequest
2 голосов
/ 14 июня 2011

Как я могу написать скрипт, который вызывает мой код PHP? Этот скрипт должен содержать записи, которые находятся в базе данных Filemaker.

Ответы [ 4 ]

1 голос
/ 06 июля 2013

У меня была похожая проблема, когда я хотел, чтобы действие FileMaker запустило скрипт, который предупредил бы веб-сайт, что что-то изменилось.Я работал в FileMaker Pro 11, поэтому Insert from URL не вариант (хотя, как бы мне этого хотелось)!

Я создал скрипт FileMaker под названием Sync и дал ему одно действие: Perform AppleScript (очевидно,это работает только на Mac; вы можете добиться чего-то подобного, используя Send DDE Execute в Windows).

В параметрах шага сценария я установил для Perform Applescript значение Calculated AppleScript и установил его следующим образом:

"do shell script \"curl http://example.com/sync.php?id=" & Get( RecordID ) &
"\\\&layout=" & GetAsURLEncoded( Get( LayoutName ) ) & "\\\&table=" & 
GetAsURLEncoded( Get( LayoutTableName ) ) & "\""

Запишите все кавычки и экранирование кавычек.

Чтобы заставить это выполниться, когда что-то изменяется, перейдите в Файл »Управление» Макеты и выберите макет, где пользователь может редактироватьзапись, затем нажмите Edit.В появившемся диалоговом окне «Настройка макета» перейдите к Script Triggers и для события OnRecordCommit выберите сценарий синхронизации, который вы только что создали.

Теперь при изменении записи в этом макете сценарий синхронизации будет запускатьвыполняет AppleScript, который выполняет команду оболочки curl, отправляя GET-запрос что-то с эффектом:

curl http://example.com/sync.php?id=123&layout=Edit%20Records&table=Records

Оттуда создайте sync.php, чтобы делать что-то умное при загрузке, используя $_GET['id'] и $_GET['layout'] и $_GET['table'] или аналогичные сквозные переменные.

Одно предостережение при таком подходе заключается в том, что FileMaker зависает во время выполнения сценария оболочки, что в данном случае означает, что curl либо не получит ответ, либовремя вышло.Хотя вы можете установить очень низкое время ожидания (добавьте аргументы --output /dev/null --silent --head --fail --connect-timeout 1), оно все равно вызывает задержку пользователя примерно на секунду, что может быть заметно, если пользователь редактирует много записей.Если у кого-то есть решение для этого или способ заставить скрипт работать асинхронно в фоновом режиме, пожалуйста, дайте мне знать.

1 голос
/ 14 мая 2013

Вы можете использовать шаг сценария «Вставить из URL», чтобы вызвать PHP и заставить его что-то делать. Я смог использовать это в сценарии на стороне сервера для вызова сценария PHP с некоторыми параметрами в URL. Это позволило мне заставить Filemaker общаться с PHP API другого сервиса. Не уверен, что это ответит на ваш вопрос (или даже если это еще вопрос), но подумал, что поделюсь.

0 голосов
/ 16 июня 2011

Прежде чем приступить к добавлению кодирования для собственного файла, попробуйте получить пример кода API для работы с базой данных FMServer_Sample.

0 голосов
/ 14 июня 2011

Да, для FileMaker доступен PHP API:

http://www.filemaker.com/downloads/pdf/article2_php.pdf

...