Одним из основных нововведений релиза 2023.1 является крупное обновление продуктов Reports.PHP и Dashboards.PHP. Подробнее об этом мы уже писали в недавней новости. При переходе на новую версию продуктов мы постарались максимально сохранить совместимость уже написанного кода, но для корректной работы продуктов всё же необходимо будет внести небольшие правки, о которых мы сегодня и расскажем.
Для установки продукта в уже существующий проект, достаточно из папки
либо
Теперь вы можете удалить следующие папки с ресурсами и скриптами предыдущих версий продуктов в корневой директории:
В обновленном продукте была изменена папка расположения скриптов продукта, это необходимо было сделать для реализации поддержки менеджера пакетов Composer. Теперь все файлы располагаются в папке
Работа указанного метода подключения скриптов сохранена, но после загрузки пакета при помощи Composer, необходимо скорректировать пути ко всем скриптам продукта:
В обновленном продукте был добавлен специальный PHP-класс для более простого развертывания, мы рекомендуем использовать именно этот метод. Теперь достаточно разместить несколько строк PHP-кода в блоке
При необходимости можно настроить процесс развертывания при помощи доступных опций класса.
В новой версии этот код заменен на другой для соответствия остальным PHP-классам обновленных продуктов. Достаточно вместо старого кода добавить обновленный, всё остальное должно работать как прежде:
При необходимости можно изменить путь к файлу обработчика событий и таймаут ответа от сервера при помощи доступных опций класса.
При необходимости предварительной обработки аргументов события на стороне JavaScript-клиента, нужно просто указать имя функции для события, всё остальное будет сделано автоматически:
Этот код остался полностью рабочим, но теперь те же действия можно выполнить гораздо проще при помощи PHP-кода:
Развертывание продукта
Для использования продукта, достаточно загрузить ZIP-архив продукта со страницы Downloads нашего сайта, распаковать его, и скопировать содержимое папки/PHP
на ваш Web-сервер. Данная папка представляет собой Web-проект, который содержит все необходимые файлы и ресурсы для работы продукта, а также примеры по работе с вьювером и дизайнером.Для установки продукта в уже существующий проект, достаточно из папки
/PHP
скопировать папку /vendor
в корневую директорию проекта, либо воспользоваться менеджером зависимостей Composer, выполнив следующую консольную команду:composer require stimulsoft/reports-php
либо
composer require stimulsoft/dashboards-php
.Теперь вы можете удалить следующие папки с ресурсами и скриптами предыдущих версий продуктов в корневой директории:
/localization
, /css
, /scripts
, /stimulsoft
. Будьте внимательны, если указанные папки дополнительно содержат файлы вашего проекта, то удалите только файлы, связанные с нашими продуктами.Подключение библиотек продукта
Ранее все PHP библиотеки продукта располагались в папке/stimulsoft
, и для их подключения достаточно было установить зависимость для основного файла продукта:<?php
require_once 'stimulsoft/helper.php';
?>
В обновленном продукте была изменена папка расположения скриптов продукта, это необходимо было сделать для реализации поддержки менеджера пакетов Composer. Теперь все файлы располагаются в папке
/vendor
в корневом каталоге проекта. Для автоматического подключения всех зависимостей необходимо подключить загрузчик PHP-классов, который автоматически сделает всю остальную работу:<?php
require_once 'vendor/autoload.php';
?>
Подключение скриптов
Раньше для подключения скриптов продукта необходимо было добавить весь список в блоке<head>
в зависимости от требуемых компонентов и возможностей:<head>
<script src="/scripts/stimulsoft.reports.js" type="text/javascript"></script>
<script src="/scripts/stimulsoft.dashboards.js" type="text/javascript"></script>
<script src="/scripts/stimulsoft.viewer.js" type="text/javascript"></script>
</head>
Работа указанного метода подключения скриптов сохранена, но после загрузки пакета при помощи Composer, необходимо скорректировать пути ко всем скриптам продукта:
<head>
<script src="/vendor/stimulsoft/reports-php/scripts/stimulsoft.reports.js" type="text/javascript"></script>
<script src="/vendor/stimulsoft/dashboards-php/scripts/stimulsoft.dashboards.js" type="text/javascript"></script>
<script src="/vendor/stimulsoft/reports-php/scripts/stimulsoft.viewer.js" type="text/javascript"></script>
</head>
В обновленном продукте был добавлен специальный PHP-класс для более простого развертывания, мы рекомендуем использовать именно этот метод. Теперь достаточно разместить несколько строк PHP-кода в блоке
<head>
в том месте, где ранее были добавлены скрипты продукта:<head>
<?php
$js = new \Stimulsoft\StiJavaScript(\Stimulsoft\StiComponentType::Viewer);
$js->renderHtml();
?>
</head>
При необходимости можно настроить процесс развертывания при помощи доступных опций класса.
Инициализация обработчика событий
Для отправки данных на сторону PHP-сервера из событий компонентов предназначен специальный обработчик событий, который состоит из клиентской JavaScript-части и серверной PHP-части. Раньше для его инициализации на HTML-странице необходимо было добавить следующий PHP-код:<?php
StiHelper::init('handler.php', 30);
?>
В новой версии этот код заменен на другой для соответствия остальным PHP-классам обновленных продуктов. Достаточно вместо старого кода добавить обновленный, всё остальное должно работать как прежде:
<?php
$handler = new \Stimulsoft\StiHandler();
$handler->renderHtml();
?>
При необходимости можно изменить путь к файлу обработчика событий и таймаут ответа от сервера при помощи доступных опций класса.
Работа с компонентами
Весь ранее написанный код по работе с отчетами и компонентами не требует каких-либо изменений, но теперь вы можете обновить и оптимизировать его. В обновленном продукте были добавлены PHP-классы для работы с основными возможностями компонентов, что упрощает работу с ними при помощи PHP-кода. Например, для работы со вьювером отчетов, вместо JavaScript-кода воспользуйтесь следующим PHP-кодом:<script type="text/javascript">
<?php
$options = new \Stimulsoft\Viewer\StiViewerOptions();
$options->appearance->fullScreenMode = true;
$options->appearance->scrollbarsMode = true;
$viewer = new \Stimulsoft\Viewer\StiViewer($options);
$report = new \Stimulsoft\Report\StiReport();
$report->loadFile('reports/SimpleList.mrt');
$viewer->report = $report;
$viewer->renderHtml('viewerContent');
?>
</script>
Работа с событиями
Также, как и компоненты, все их события будут работать без изменений кода. В обновленном продукте работа с событиями была упрощена. Теперь для работы с событием на стороне PHP-сервера достаточно указать, что выбранное событие должно быть обработано. Например, чтобы добавить событие получения SQL-данных, достаточно одной строки кода:<script type="text/javascript">
<?php
$viewer = new \Stimulsoft\Viewer\StiViewer($options);
$viewer->onBeginProcessData = true;
$viewer->renderHtml('viewerContent');
?>
</script>
При необходимости предварительной обработки аргументов события на стороне JavaScript-клиента, нужно просто указать имя функции для события, всё остальное будет сделано автоматически:
<script type="text/javascript">
<?php
$viewer = new \Stimulsoft\Viewer\StiViewer($options);
$viewer->onBeginProcessData = 'onBeginProcessData';
$viewer->renderHtml('viewerContent');
?>
function onBeginProcessData(args) {
}
</script>
Экспортирование отчета
Раньше для экспортирования отчета нужно было написать достаточно большой блок JavaScript-кода. Например, для экспорта отчета в PDF, нужно было добавить следующий код на HTML страницу:var report = new Stimulsoft.Report.StiReport();
report.loadFile("reports/SimpleList.mrt");
report.renderAsync(function() {
report.exportDocumentAsync(function (data) {
Stimulsoft.System.StiObject.saveAs(data, "Report.pdf", "application/pdf");
}, Stimulsoft.Report.StiExportFormat.Pdf);
});
Этот код остался полностью рабочим, но теперь те же действия можно выполнить гораздо проще при помощи PHP-кода:
<?php
$report = new \Stimulsoft\Report\StiReport();
$report->loadFile('reports/SimpleList.mrt');
$report->render();
$report->exportDocument(\Stimulsoft\StiExportFormat::Pdf);
$report->renderHtml();
?>