2014-11-14 4 views
0

CakePdf 플러그인/wkHtmlToPdf를 사용하여 PDF를 출력 할 '보기'컨트롤러에 변수 (실제로는 JavaScript를 통해 동적으로 생성 된 광범위한 양의 HTML)를 전달해야합니다.CakePdf에 Javascript 변수 전달하기

내가 아약스를 통해 시도 :

$.ajax({ 
     type: "POST", 
     url: "<?php echo $this->webroot . $this->params["controller"]; ?>/view/"+$id+".pdf", 
     data: {id: $id, matrix: $matrix.html()}, 
     success: function(data){ 
     console.log(data);  
     } 
    }); 

을 그리고는 PDF 스트림 포함 data을 반환하는 것처럼 보인다, 그러나 나는 브라우저로 보낼 수 없습니다. (이것은 플러그인에 의해 이루어 지므로 플러그인을 반향시킬 수는 없습니다. 플러그인은 아마도 이미 시도하지만, 요청은 백그라운드에서 수행되므로 작동하지 않습니다.)

또한 postLink 메소드를 사용하여 버튼을 생성 해 보았습니다.

<li><?php echo $this->Form->postLink(__('Button'), array('action' => 'view', $project['Project']['id'].'.pdf'), null); ?> </li>  

PDF 생성과 관련하여 작동합니다. 하지만이 경우 자바 스크립트 변수 ($ 행렬)를 전달하는 방법을 모르겠습니다.

아이디어가 있으십니까?

+0

당신이 당신의 질문을 calrify 수가! 너는 정확히 무엇을하고 싶니? –

+0

기본적으로 데이터를 처리하고 CakePdf 플러그인을 사용하여 PDF를 표시하는 컨트롤러에 일부 긴 데이터를 게시해야합니다. 비동기 요청을 사용하여 시도했을 때 제대로 "울리는"않았습니다. 그리고 링크를 생성하기 위해 Form 컴포넌트의'postLink' 메소드를 사용할 때 제 컨트롤러에 "JavaScript 변수"를 전달할 수 없었습니다. 그게 도움이 되니? – gtamorim

답변

1

이것이 가장 우아한 답변 일 수 있는지는 잘 모르겠지만 숨겨진 양식을 사용하여 데이터를 제출함으로써이 문제를 해결할 수있었습니다.

<form action="projects/view/" name="frmPrint" id="frmPrint" style="display:none;" method="post"> 
       <input id="printData" type="hidden" name="_method" value="POST"> 
    </form> 
    <a id="printMatrix">Print</a></li> 

자바 스크립트 (jQuery)를 사용하여 양식을 제출하기 전에 이동 중에 printData를 변경했습니다.

function printMatrix() { 
    var $matrix = $('#matrix'); // the element to be sent via post 
    $('#printData').val($matrix[0].innerHTML); // updating the hidden input  
    $('#frmPrint').submit(); // submitting the form 
} 

<a> 태그의 클릭 트리거에 바인딩 이벤트가 :

$(document).on('click', '#printMatrix', function(event){ printMatrix(); });