2011-03-29 2 views
1

PHP로보고하는 방법에 대한 권장 사항을 찾고 있습니다. 특히 PDF 렌더링이 필요하고 가능한 한 많은 코드를 프리젠 테이션에서 분리하고 싶습니다 (일종의 템플릿?).템플릿으로 PHP 리포트하기

최근 작업에 PHP4 코드베이스를 받았고 PHP5로 업그레이드 할 책임이 있습니다. 현재 TCPDF를 통해 생성 된 보고서는 PHP에서 직접 생성 된 HTML에서 생성됩니다. 업그레이드 프로세스가 극도로 어려운 것으로 나타났습니다. TCPDF에서 여러 가지 문제가 발생하여 무한 루프로 돌아가서 절대로 돌아 가지 않습니다. 몇 가지 문제 해결 및 포럼 게시판을 통해 우리는 TCPDF4와 PHP4가 문제가되지 않지만 TCPDF5와 PHP5는 문제가되는 것으로 보입니다. 불행히도 우리가 위반하는 규칙에 오류가있는 것이 아니라 무한히 중단됩니다. 사내 코드는 일부 리팩토링을 사용할 수 있으며 재 작성이 이러한 문제 중 많은 것을 완화 할 수 있다고 생각합니다. 그러나 지금 TCPDF를 넘어서는 것을 반대하지는 않습니다.

우리 코드에는 많은 HTML 생성 기능이 나머지보고 기능과 혼합되어 있습니다. 필자는이를 분리하여 보고서를 편집하거나 작성할 때 PHP 코드가 거의 필요 없도록하고 싶습니다. 나는 그 보고서를 너무 좋아할 필요가 없다. 단일 탭에서 기본 데이터 테이블과 여러 가로 창을 지원해야합니다. 차트가 있지만 현재 별도의 패키지로 생성되어 이미지로 직접 읽습니다. 이 보고서를 다시 작성하는 가장 좋은 방법에 대한 제안 사항은 무엇입니까? 감사.

답변

1

PHP를 템플릿 엔진으로 사용할 수 있으며 HTML 출력을 PDF로 변환 할 수 있습니다. 여기

는 PHP의 템플릿에 대한 옵션은 다음과 같습니다

  • 사용 Smarty, 꽤 쉽게하고 자신의 템플릿 언어입니다,하지만 나는 그것이 당신의 용도 비트 overhad을 위해 있다고 생각합니다.
  • 아니면 그냥 일반 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

네, 당신이 잘 이해하고 있다고 생각합니다. 고마워, 고마워. –

0

내가 여러 클래스 사용하여 일부 동적 PDF를 만든 : 데이터 액세스 및 관리

에서 분리 PDF 및 PDF 디자인을, 나는 당신이 모든 보고서에 사용할 수있는 하나 개의 추상 클래스가 있습니다. 이 클래스는 PDF 생성 (모든 설정)을 처리하고 일부 스타일 ("writeTitle1()") 또는 데이터를 렌더링하는 도우미 메서드를 디자인 할 수 있습니다. ex "writeReportTable()" html2pdf를 변환하는 시스템을 유지하려는 경우이 클래스는 일부 HTML을 생성하거나 템플릿 엔진을 호출 할 수 있습니다. 제 디자인에서는이 클래스가 일반적으로 PDF 엔진을 래핑합니다. (저는 종종 Cezpdf를 사용합니다)

그런 다음 각 보고서에 대해 데이터 관리에 중점을 둔 하위 클래스 인 데이터를 가져 와서 형식을 지정한 다음 렌더링 방법을 호출합니다.

이것은 가시성을 확보하기위한 첫 번째 단계입니다. 독립적 인 레이어입니다.

관련 문제