2009-09-18 2 views
1

는 누군가가 이러한 기능을 설명해 주시겠습니까 : 그것은 (어쨌든 공공 방법으로) 그 중 세 가지를 모두 가지고 약간 중복 느낌CakePHP RequestHandler : setContent/renderAs/respondAs .. 뭐라 구요?

RequestHandlerComponent::renderAs() 
RequestHandlerComponent::respondAs() 
RequestHandlerComponent::setContent() 

. 요청에 PDF 파일로 응답하려면 3 가지 기능을 모두 호출해야합니다. 컨트롤러에서 어떻게 사용해야합니까?

답변

8

모두 다릅니다. API Docs에서 :

renderAs
은 $ 유형에 의해 정의 된 콘텐츠 형식의 레이아웃 및 템플릿 경로를 설정합니다.

.l.e. 어느 정도의 단축키 $this->layout = '...'$this->render(...).

respondAs
는 형태 맵 인덱스 이름을 기준으로 응답 헤더를 설정합니다. DEBUG가 2보다 크면 헤더가 설정되지 않습니다.

출력 header(...).

의 setContent
을 추가은/지정된 이름의 컨텐츠 타입 (들)을 설정합니다. 이 메소드를 사용하면 컨텐츠 유형을 친숙한 별명 (또는 확장자)에 맵핑 할 수 있으므로 시작 메소드에서 RequestHandler가 해당 유형의 요청에 자동 응답 할 수 있습니다.

실제로 출력에 아무런 변화가 없으며 기본적으로 정의되지 않은 새로운 유형을 추가 할 수 있습니다.

PDF를 출력하려면 (이미 파일로 설정 한 경우) 실제로 Media View을 사용해야합니다.

+0

"PDF 파일을 출력하는 경우 (이미 파일로 가정)"아니요, FPDF를 사용하여 PDF를 생성 중입니다. 나에게'renderAs'와'respondAs'를 해 주셔서 고맙습니다. 그러나'setContent'를 어떻게/어디에서 사용하는지 혼란 스럽습니다. URL 또는 유사한 방식으로 응답 유형을 결정할 수 있습니까? 예 : mysite.com/reports/view/html은 자동으로 HTML로 응답하지만, mysite.com/reports/view/pdf는 PDF로 응답한다. – nickf

+1

네, 거의. example.com/controller/action.xml과 같이 "확장 기능"을 구문 분석하고 처리해야합니다. AFAIU'setContent()'는 커스텀 확장을 추가 할 수있게 해준다. 위의 설명서에서 참조하는 시작 방법을 확인하십시오. http://api.cakephp.org/view_source/request-handler-component/#l-171 – deceze

관련 문제