2010-11-23 2 views
1

Kohana3을 사용하고 있습니다. 페이지를 새 URL로 리디렉션하기 전에 일부 처리를 수행하려고합니다. 컨트롤러 클래스의 메서드 뒤에 을 사용하려고 시도했지만 메서드 후 컨트롤러 요청은 리디렉션 될 경우 실행되지 않습니다. 또한 register_shutdown_function, 사용하려고했지만 요청을 다른 페이지로 리디렉션 할 때 여전히 호출됩니다.요청 리디렉션 전에 함수 호출 방법

답변

3

... 마술 방법 __destruct()을 시도 해제 초기화 :

// basic controller 

protected function _redirect($url, $code=302) 
{ 
    $this->_shutdown(); 
    $this->request->redirect($url, $code); 
} 

protected function _shutdown() 
{ 
    // log queries, stats etc 
} 
1

이것을 사용할 때를 의미합니까?

$this->request->redirect('/somewhere') 

그렇다면 그 라인보다 먼저 함수를 호출 할 수 있습니까?

당신이 객체가 될 때 실행할 수있는 무언가를 찾고 있다면 자신의 컨트롤러의 방법 redirect($url, $code)를 만들고 리디렉션 대신 $this->request->redirect()을 위해 사용

public function __destuct() { 
    // Something 
} 
+0

@Alex : 기본적으로 실행중인 모든 데이터베이스 쿼리를 기록해야합니다. 그래서 각 요청이 끝날 때 호출되어야하는 함수를 선언했습니다. 완벽하게 작동하지만 페이지가 리디렉션 될 때마다 실패합니다. –

+1

@Asi Mulla'Db' 모듈을 확장하고 로깅 요구 사항에'Kohana :: log()'를 사용해야합니다. – alex

+0

+1 Alex의 제안의 경우 –