This example shows how to save a report template from the
Stimulsoft Designer on the server side using PHP. First, include the Stimulsoft libraries:
<?php
require_once '../vendor/autoload.php';
use Stimulsoft\Designer\StiDesigner;
use Stimulsoft\Events\StiReportEventArgs;
use Stimulsoft\Report\StiReport;
use Stimulsoft\StiResult;
?>
Next, create a
Designer object and configure JavaScript-related options:
$designer = new StiDesigner();
$designer->javascript->relativePath = '../';
$designer->javascript->appendHead('<link rel="shortcut icon" href="/../favicon.ico" type="image/x-icon">');
Define designer events before processing. You can assign a PHP function, the name of a JavaScript function, or a JavaScript function as a string. Multiple event handlers can be added using the
append() method. In this example, the
onSaveReport event is used to save the report template on the server:
$designer->onSaveReport = function (StiReportEventArgs $args) {
$reportFileName = strlen($args->fileName) > 0 ? $args->fileName : 'Report.mrt';
if (strlen($reportFileName) < 5 || substr($reportFileName, -4) !== '.mrt')
$reportFileName .= '.mrt';
$reportPath = "../reports/$reportFileName";
$result = file_put_contents($reportPath, $args->getReportJson());
if ($result === false)
return StiResult::getError('An error occurred while saving the report file on the server side.');
return StiResult::getSuccess("The report has been successfully saved to '$reportPath' file.");
};
Process the request on the server side using
process():
$designer->process();
Create a
Report object and load a report template. The
loadFile() method does not load the report on the server side; it only generates JavaScript code for the client side:
$report = new StiReport();
$report->loadFile('../reports/SimpleList.mrt');
Assign the report to the designer:
$designer->report = $report;
Finally, render the designer as a complete HTML page using
printHtml():
$designer->printHtml();
In the screenshot below you can see the result of the sample code: