В дизайнере предусмотрено два варианта сохранения отчета, которые доступны в главном меню и на главной панели дизайнера: Сохранить (Save) и Сохранить как (Save As). В свою очередь, каждый из этих вариантов сохранения имеет свои режимы и настройки.

 

 

Сохранение отчета на стороне JavaScript клиента

При нажатии кнопки Сохранить (Save), сохранение файла шаблона отчета осуществляется средствами браузера, для этого не требуется каких-либо настроек. При необходимости сохранения отчета своими методами, предназначено событие onSaveReport. В аргументах события будут переданы имя файла отчета и сам отчет. Отчет можно сохранить, например, в JSON строку и передать на сторону сервера своими методами.

 

designer.php

 

<?php

$designer = new \Stimulsoft\Designer\StiDesigner();

$designer->onSaveReport = 'onSaveReport';

$designer->renderHtml();

?>

 

function onSaveReport(args) {

var fileName = args.fileName;

var report = args.report;

 

var jsonReport = args.report.saveToJsonString();

}

 

 

 

Если событие определено, то после завершения события дизайнер продолжает работу без каких-либо дополнительных действий и сообщений. При необходимости, после сохранения отчета можно отобразить диалоговое окно с ошибкой или текстовым сообщением. Для этого предназначена специальная функция StiError.showError(). Вы сами определяете необходимость отображения сообщения об ошибке.

 

designer.php

 

<?php

$designer = new \Stimulsoft\Designer\StiDesigner();

$designer->onSaveReport = 'onSaveReport';

$designer->renderHtml();

?>

 

function onSaveReport(args) {

var report = args.report;

 

// Error message

Stimulsoft.System.StiError.showError("An error occurred while saving the report.");

 

// Info message

Stimulsoft.System.StiError.showError("The report was saved successfully.", true, true);

}

 

 

 

При нажатии кнопки Сохранить как (Save As), будет отображено диалоговое окно с запросом имени файла отчета. После этого сохранение файла шаблона отчета будет осуществляться средствами браузера. При необходимости сохранения отчета своими методами, предназначено событие onSaveAsReport. В аргументах события будут переданы имя файла отчета и сам отчет.

 

Работа данного события не отличается от работы события onSaveReport, за исключением того, что после завершения события произойдет автоматическое сохранение шаблона отчета на компьютере средствами браузера. Для предотвращения этого действия, достаточно установить свойство preventDefault в значение true в аргументах события, в этом случае автоматическое сохранение не будет выполнено.

 

designer.php

 

<?php

$designer = new \Stimulsoft\Designer\StiDesigner();

$designer->onSaveAsReport = 'onSaveAsReport';

$designer->renderHtml();

?>

 

function onSaveAsReport(args) {

args.preventDefault = true;

}

 

 

 

При необходимости, вы можете получить доступ к оригинальному имени отчета или имени отчета из диалога сохранения следующим образом:

 

designer.php

 

<?php

$designer = new \Stimulsoft\Designer\StiDesigner();

$designer->onSaveAsReport = 'onSaveAsReport';

$designer->renderHtml();

?>

 

function onSaveAsReport(args) {

// Report name from the designer save dialog

var reportName1 = args.fileName;

 

// Original report name from properties

var reportName2 = args.report.reportName;

}

 

 

 

Подробное описание доступных значений аргументов находится в разделе События дизайнера.

 

 

Сохранение отчета на стороне PHP сервера

Для сохранения отчета на стороне PHP сервера, необходимо на стороне клиента добавить вызов обработчика событий, а на стороне сервера определить одноименное событие onSaveReport в файле обработчика событий. Подробное описание работы событий находится в разделе Обработчик событий PHP.

 

designer.php

 

<?php

$designer = new \Stimulsoft\Designer\StiDesigner();

$designer->onSaveAsReport = true;

$designer->renderHtml();

?>

 

 

handler.php

 

$handler->onSaveReport = function ($args) {

$fileName = $args->fileName;

$report = $args->report;

$reportJson = $args->reportJson;

 

return \Stimulsoft\StiResult::success();

};

 

 

 

В аргументах события будут переданы имя файла отчета и сам отчет в виде объекта и в виде JSON строки для удобства использования. Для сохранения отчета можно воспользоваться стандартными PHP функциями. Например, требуется сохранять редактируемый отчет в виде файла в заданной директории:

 

handler.php

 

$handler->onSaveReport = function ($args) {

$fileName = $args->fileName;

$reportJson = $args->reportJson;

 

file_put_contents('reports/'.$fileName.'.mrt', $reportJson);

 

return \Stimulsoft\StiResult::success();

};

 

 

 

Подробное описание доступных значений аргументов находится в разделе События дизайнера.

 

Информация

 

Аналогичным образом реализована работа события onSaveAsReport на стороне PHP сервера, все аргументы события имеют те же имена и значения.