2010-07-11 4 views
0

내 Bootstrap.php에서 프로필러를 비활성화했습니다 (또는 활성화하는 것이 더 좋습니까?) 및 오류.Kohana3 - 오류 템플릿이 FALSE 인 경우

누군가가 URL을 호출 중이면/notexist 일 가능성이 있으며 action_notexist()가 없으면 사이트는 비어 있습니다.

내 질문 : 어떻게 흰색 페이지 대신로드해야하는 기본 오류 템플릿을 만들 수 있습니다. 예 : 전화하시는 경우 : http://twitter.com/notexistinguser, Kohana3와 동일한 '페이지가 존재하지 않습니다.'라는 오류가 있습니까?

감사합니다 :)

답변

2

그들을 잡기, 예외를 무시하지 마십시오.

+2

잡기 예외의 예는 http://kerkness.ca/wiki/doku.php?id=routing:404_pages_by_catching_reflection_exception – slacker

+0

nice @slacker =) 흥미로운 것 같습니다 .. 고마워요! – ahmet2106

1

은 무엇 당신이해야 할 것은 당신의 bootstrap.php 파일에 Kohana_Exception를 잡을 수 있습니다. 여기 내 프로젝트 중 하나의 코드 샘플이있다.

try 
{ 
    echo Request::instance() 
     ->execute() 
     ->send_headers() 
     ->response; 
} 
catch (Kohana_Exception $e) 
{ 
    echo Request::factory('static/404')->execute()->send_headers()->response; 
} 

여기에 무슨 일이 일어나는지 설명하겠습니다. 요청 된 URL에 대한 경로가 존재하지 않으면 Request_Exception (Kohana_Exception의 인스턴스)을 발생시킵니다.

그런 다음 HMVC 기능을 사용하여 템플릿, 상태 코드, 로깅 및 오류 메시지를 처리하는 404 페이지에 대한 하위 요청을 만듭니다.

앞으로 Kohana는 응답을 처리하는 특별한 예외가있을 수 있지만 지금은 내 솔루션을 사용할 수 있습니다.

당신을 도운 희망.

+0

흥미로운 방법, 나는 그것을 시도 할 것입니다 ... 이것은 부트 스트랩의 마지막 라인입니까? 내가 맞습니까? 고마워요 – ahmet2106

+0

네, 맞습니다. –

1

저는 Kohana를 처음 사용하지만 다음 기술을 사용합니다. Kohana_Exception을 상속 예를 Exception_404를 들어,

define('IN_PRODUCTION', true); 

두 번째 새로운 예외 클래스를 만들 : 첫째는, 예를 들어 IN_PRODUCTION를 들어, 일부는 일정 정의합니다. 다음으로

echo Request::instance() 
->execute() 
->send_headers() 
->response; 

: 셋째,이 코드를 대체

$request = Request::instance(); 
try 
{ 
    $request->execute(); 
} 
catch(Exception_404 $e) 
{ 
    if (! IN_PRODUCTION) 
    { 
     throw $e; 
    } 

    //404 Not Found 
    $request->status = 404; 
    $request->response = View::factory('404'); 
} 

print $request->send_headers()->response; 

지금 당신은 당신의 자신의 오류 템플릿이 있습니다. 너가 원하는게 그거야?

+0

nice, 고맙습니다, 이번 주에 테스트 해 보겠습니다 :) – ahmet2106

+1

Kohana는 KOHana :: $ 환경 변수를 가지고 있으므로 IN_PRODUCTION을 만들 필요가 없습니다. 이것은 상수와 결합 할 수 있습니다. Kohana :: PRODUCTION, Kohana :: STAGING & Kohana :: DEVELOPMENT –

+0

아, 몰랐습니다. 그래서, 괜찮아요, 많이 고마워요 :) – franzose

관련 문제