Обработчик событий PHP
Примеры |
Полный код примера можно найти на GitHub по данной ссылке.
|
Генератор отчетов, а также вьювер и дизайнер отчетов, умеют вызывать события на стороне клиента, передавать их на сторону PHP сервера для последующей обработки, и принимать подготовленный ответ со стороны PHP сервера. Всё необходимое для работы событий находится в классе StiHandler, который нужно добавить в блок <script> перед остальными компонентами:
index.php |
<?php $handler = new \Stimulsoft\StiHandler(); $handler->renderHtml(); ?>
|
При необходимости, можно задать в опциях файл серверного скрипта обработчика событий, и таймаут ожидания ответа:
index.php |
<?php $handler = new \Stimulsoft\StiHandler(); $handler->options->url = 'handler.php'; $handler->options->timeout = 30; $handler->renderHtml(); ?>
|
После выполнения функции renderHtml(), на PHP страницу будет добавлен JavaScript код, необходимый для работы с событиями. Для передачи данных на сторону сервера, необходимо включить обработку необходимого события. Для этого достаточно установить в true соответствующее свойство компонента:
index.php |
<?php $report = new \Stimulsoft\Report\StiReport(); $report->onBeginProcessData = true; $report->renderHtml(); ?>
|
При необходимости обработки параметров, передаваемых на сторону сервера перед их передачей, предусмотрена возможность определить JavaScript функцию для события. В этом случае, все передаваемые параметры будут содержаться в аргументах функции, при необходимости значения аргументов можно изменять:
index.php |
<?php $report = new \Stimulsoft\Report\StiReport(); $report->onBeginProcessData = 'onBeginProcessData'; $report->renderHtml(); ?>
function onBeginProcessData(args) {
}
|
В обработчике событий на стороне PHP сервера, в одноименном событии в аргументах можно прочитать все доступные параметры, переданные из генератора отчетов, проверить их, и при необходимости внести корректировки. Например, в данном случае будет вызвано событие onBeginProcessData в файле handler.php:
handler.php |
$handler->onBeginProcessData = function ($args) { ...
return \Stimulsoft\StiResult::success(); };
|
После обработки события на стороне PHP сервера, обработчик должен вернуть ответ на сторону клиента о результате выполнения события. Для этого предусмотрены две статические функции: StiResult::success() - событие выполнено успешно, и StiResult::error() - в момент выполнения произошла какая-либо ошибка. Вы сами контролируете этот процесс, и принимаете решение о необходимом ответе. В качестве параметра функции можно передать строковое сообщение, которое будет отображено на стороне клиента после выполнения события, например:
handler.php |
$handler->onBeginProcessData = function ($args) { ...
// You can send a successful result return \Stimulsoft\StiResult::success();
// You can send an informational message //return \Stimulsoft\StiResult::success('Some warning or other useful information.'); // You can send an error message //return \Stimulsoft\StiResult::error('A message about some error.'); };
|
Информация |
При возникновении критических ошибок на стороне PHP сервера, предусмотрена автоматическая отправка информации об ошибке на сторону клиента. Если указанный функционал не требуется, его можно отключить, передав значение false для параметра $registerErrorHandlers в конструкторе обработчика событий на стороне сервера:
$handler = new \Stimulsoft\StiHandler(false);
|
Шифрование данных, передаваемых на сторону PHP сервера
Для исключения кражи передаваемых данных злоумышленниками, мы рекомендуем использовать HTTPS протокол, в большинстве случаев этого достаточно. В дополнении к этому, по умолчанию все передаваемые данные проходят через специальный алгоритм кодирования, и передаются на сервер в зашифрованном виде. Это позволяет скрыть конфиденциальные данные, например логин и пароль в строке подключения, от любопытных пользователей, работающих с вашим приложением.
Однако, если этого не требуется, либо если нужно отобразить исходные данные запроса для отладки приложения, предусмотрена возможность отключения шифрования. Для этого достаточно установить свойство $encryptData в значение false у обработчика событий:
index.php |
<?php $handler = new \Stimulsoft\StiHandler(); $handler->encryptData = false; $handler->renderHtml(); ?>
|
Передача значений GET параметров в PHP обработчик событий
Предусмотрена возможность автоматической передачи всех значений параметров GET запроса в обработчик событий, во всех событиях которого можно будет получить их значения. Для включения этой возможности, достаточно установить опцию passQueryParameters в значение true, после этого все параметры GET запроса будут переданы при каждом запросе к обработчику событий. По умолчанию данная опция отключена.
index.php |
<?php $handler = new \Stimulsoft\StiHandler(); $handler->options->passQueryParameters = true; $handler->renderHtml(); ?>
|