PHP отчеты с шаблонами - PullRequest
1 голос
/ 29 марта 2011

Я ищу рекомендации по составлению отчетов в PHP.В частности, мне нужен рендеринг PDF, и я хотел бы как можно больше отделить презентацию от своего кода (какие-то шаблоны?).

Недавно я получил кодовую базу PHP4 на работе, и яотвечает за обновление до PHP5.Отчеты в настоящее время создаются через TCPDF, которые основаны на HTML, сгенерированном прямо из PHP.Процесс обновления оказывается чрезвычайно сложным.Я сталкиваюсь с множеством проблем с TCPDF, где он просто войдет в бесконечный цикл и никогда не вернется.В некоторых сообщениях об устранении неполадок и сообщениях на форумах выясняется, что мы делаем некоторые вещи, с которыми у TCPDF4 в PHP4 не было проблем, а в TCPDF5 и PHP5 - нет.К сожалению, вместо того, чтобы ошибаться в любых правилах, которые мы нарушаем, я просто получаю бесконечные зависания.Наш внутренний код может использовать некоторый рефакторинг, и я считаю, что переписывание может смягчить многие из этих проблем, однако я не против того, чтобы смотреть за пределы TCPDF прямо сейчас.

В нашем коде также есть многоГенерация HTML смешалась с остальными функциями отчетов.Я действительно хотел бы выделить это так, чтобы при редактировании или создании отчета практически не требовался PHP-код.Мне не нужно ничего особенного для отчета.Требуется поддержка базовых таблиц данных и нескольких горизонтальных панелей на одной вкладке.Есть графики, но они в настоящее время генерируются отдельным пакетом и просто читаются как изображения.Предложения о том, как лучше сделать эти отчеты?Спасибо.

Ответы [ 2 ]

1 голос
/ 29 марта 2011

Вы можете использовать PHP в качестве движка шаблонов, а затем преобразовать вывод HTML в PDF.

Вот варианты шаблонов PHP:

  • Использовать Smarty , это довольно просто и имеет свой собственный язык шаблонов, но я думаю, что он для вас немного перегружен.
  • Или вы можете использовать просто обычный PHP, просто поместив код шаблонов в отдельныйкаталог и создать функцию render_template('template_name.php') или что-то вроде этого.

В вашем случае, я думаю, что вы могли бы написать свой собственный класс для обработки отчетов.Вот простой пример использования:

<?php
 $report = new Report(1234);    // report id
 $report->template = 'default'; // or something different
 $report->addField('Users', array('Claire', 'Fred', 'Kevin'), array('renderArray' => true));
 $report->addField('Note', '<p>This report was generated automatically.');

Итак, в конце концов вы можете использовать некоторые простые идеи, лежащие в основе этого простого наброска.

Я надеюсь, что я правильно понял ваш вопрос, ичтобы я мог помочь вам с этим ответом.

0 голосов
/ 29 марта 2011

Я создал несколько динамических PDF, используя несколько классов: отделяя дизайн PDF и Pdf от доступа к данным и управления им

У меня есть один абстрактный класс, который вы можете использовать для всех ваших отчетов.этот класс обрабатывает генерацию PDF (все настройки), и вы можете разработать некоторые стили ("writeTitle1 ()") или вспомогательные методы для визуализации данных.ex "writeReportTable ()" Если вы планируете сохранить систему, которая конвертирует html2pdf, этот класс может также генерировать html или вызывать любой движок шаблонов.В моем дизайне этот класс обычно обёртывает движок PDF.(Я часто использую Cezpdf)

Затем для каждого отчета - дочерний класс, который фокусируется на управлении данными: получение и форматирование данных, затем вызов метода рендеринга.

Это первый шаг кполучить некоторую видимость: независимые слои.

...