2014-04-08 2 views
0

나는 다음과 같이 내 자신의 404 오류 처리기 편집 laravel 4의 /app/start/global.php 파일을 만들 수 있습니다호출 응답 :: 만들기는 상태 코드를 표시

App::error(function(Exception $exception, $code) 
{ 
    Log::error($exception); 

    if (Config::get('app.debug')) { 
     return; 
    } 

    switch ($code) 
    { 
     case 403: 
     case 404: 
     case 500: 
      $view = App::make('PublicController')->callAction('error', array($code)); 
      $response = Response::make($view, $code); 
      return $response; 
      break; 

     default: 
      return Response::view('errors.default', array(), $code); 
      break; 
    } 
}); 
  1. 때문에 사용 템플릿 라이브러리, 내가 delagate해야 특정 컨트롤러에서 스타일을 볼 수 있습니다. 그래서,이 라인과 멋진 스타일을 얻을 : 때문에 응용 프로그램의

    $view = App::make('PublicController')->callAction('error', array($code)); 
    
  2. 브라우저 요청에 대한 상태 코드를 필요로, 나는 응답의 내용으로 렌더링 된 HTML보기를 사용 Response::make으로 구축하고, 반환 :

    $response = Response::make($view, $code); 
    return $response; 
    

워크 플로는 정말 좋은 스레드를 다음과 404 HTML보기는 404 개 상태도 좋은 설정 레이아웃에 따라 제대로 보여 주었다된다. 하지만, 여기서 뭐가 문제 야? 잘 .. 어떤 이유로, HTML 출력에서 ​​"에코"가 다음과 같은 :

HTTP/1.0 200 OK :

HTTP/1.0 200 OK 
Cache-Control: no-cache 
Date:   Tue, 08 Apr 2014 18:21:44 GMT 

<!DOCTYPE html> 
<html lang="en"> 

    <head> 
    <meta charset="utf-8"> 

    ... 

당신이주의 경우는, 처음에 메시지가 캐시 제어 : 노 캐시 날짜 : 내가 할 경우 때문에 Response::make 기능, 내 echo을 가지고 같은 4월 8일 (화) 2014 그리니치 표준시 18시 21분 44초

가 보이는 :

$view = App::make('PublicController')->callAction('error', array($code)); 
return $view; 

... 메시지가 사라지지만 상태 코드를 설정하려면 Response 클래스를 사용해야하므로이 대답이 마음에 들지 않습니다. 이 문제를 어떻게 처리 할 수 ​​있습니까?

+1

사용자 정의 404의 경우 'App :: missing' 메소드를 사용하지 않는 이유는 무엇입니까? – Aristona

+0

더 자세한 정보를 찾도록하겠습니다. – manix

답변

2

또한이 문제가 발생하여 해결되었습니다. 이게 당신을 도울 수 있기를 바랍니다.

$view = App::make('PublicController')->callAction('error', array($code)); 
return Response::make($view->__toString(), $code); 
관련 문제