2015-01-15 4 views
0

CakePHP 2.6에서는 가끔 beforeFilter() 콜백에서 현재 요청을 끝내고 금지 된 상태 또는 찾지 못한 결과 상태를 발행하려고합니다.beforeFilter에서 CakePHP 2.6의 요청을 끝내는 적절한 방법

컨트롤러 작업에서 나는 CakeResponse 개체를 반환하여이 작업을 수행 할 수 있지만 콜백에서이 작업을 수행 할 수 있음을 알고 있습니다. CakePHP의 적절한 방법으로 모든 콜백이 호출되고 앱이 제대로 처리되도록하거나, 그냥 헤더를 보내고 die()으로 전화 할 수 있습니까?

미리 감사드립니다.

답변

2

를 예외를 던지는하여 정확히 그렇게. 다른 필요한 아무것도 :

throw new ForbiddenException(); 

또는

throw new NotFoundException(); 

조기 구제 할 수있는 깨끗한 방법입니다

. 오류/예외 처리기는 필요한 출력 형식 (html, json, xml, ...)으로 자동으로 형식을 지정하고 올바른 헤더 (상태 코드, ...)를 보냅니다.

die()/exit를 사용하지 마십시오. 수동으로 헤더를 보내지 마십시오. 그것은 당신의 코드 untestable합니다.

1

beforeFilter()에서 CakeResponse 객체를 반환하면 동일한 방법으로 시도해 보셨습니까? CakeResponse::send()Object::_stop()을보고이 작업을 수행 할 경우

$this->response->body('whatever you need here'); 
$this->response->send(); 
$this->_stop(); 
+0

Returning CakeResponse가 작동하지 않습니다. 나는 그것을 시도했다. 나는 너의 설사약을 시도 할 것이다. –

관련 문제