2013-07-22 1 views
0

슬림 프레임 워크로 작업 해본 결과 문제가 발견되었습니다. 나는 그것을 전달하는 html 콘텐츠에서 pdf 파일을 생성하기 위해 mpdf 라이브러리를 사용하고있다. 나는 또한 (나는 생각한다) 명백한 이유를 위해 나뭇 가지 템플릿 엔진을 사용하고있다. 내 문제는 데이터가 출력 버퍼에 남아 있기 때문에 컨트롤러가 작동하고있을 때 Slim Twig View에서 렌더링 한 본문에 액세스 할 수 없다는 것입니다. 특정 경로로 요청을 가로 챈 미들웨어 클래스를 생성하고 그 본문에서 pdf 파일을 생성함으로써 해결 방법을 만들었지 만, 그렇게해야한다고 생각하지 않습니다. 나는 프레임 워크에 대해 작업하는 것과 같기 때문에 컨트롤러에서 ob_get_contents를 사용하지 않으려 고 노력했습니다.렌더링 본문 얻기

여기 내 질문이 있습니다. 내가 한 일을하는 더 좋은 방법이 있습니까?

+1

정상적인 방법은 컨트롤러가 뷰를 캡처 한 다음 pdf로 변경하는 대신 pdf를 생성하는 뷰를 가져 오는 것입니다. – Anigel

답변

0

Twig의 핵심 라이브러리에는보기 렌더링에 사용되는 Twig_Environment라는 클래스가 들어 있습니다. 이 클래스는 다음과 같은 메쏘드를 가지고 있습니다 :

$twig->display('view.html.twig', $variables); 

이것은 생성 된 내용을 즉시 출력 할 것입니다. 이것은 당신이 원하는 것이 아닙니다. 이 메서드는 다음과 같습니다.

$content = $twig->render('view.html.twig', $variables); 

이 메서드는 생성 된 HTML을 반환하고 에코하지 않습니다. 그런 다음 $ content를 PDF 라이브러리로 전달하여 PDF로 변환 할 수 있습니다.

사용중인 프레임 워크를 잘 모르는 경우에는 Twig_Environment 클래스의 인스턴스에 액세스하는 방법을 찾아야합니다.

+0

Slim을 사용하고 있습니다. 나는 그것을 작동시킬 수 없다. 내 코드 :'$ dompdf = new Dompdf(); $ vars = [ 'param'=> $ param]; $ content = $ app-> render ('path/to/view.twig', $ vars); $ dompdf-> loadHtml ($ content); $ dompdf-> render();$ dompdf-> stream ('proyectos.pdf');'요청한 HTML 문서에 데이터가 없습니다 .' 어떻게해야합니까? – Pathros

관련 문제