2014-10-15 3 views
11

이것은 나를 미치게합니다. 저는 Laravel 5와 함께 작업 중이며 4.2 및 404 페이지를 생성하는 문서가 작동하지 않는 것으로 보입니다.laravel 5 맞춤 404

이이 오류가 발생
App::missing(function($exception) 
{ 
    return Response::view('errors.missing', array(), 404); 
}); 

"방법은 (실종) 찾을 수 없습니다"

디버그가 설정됩니다

먼저, 더 global.php 그래서 나는 routes.php에 다음 퍼팅 시도하지가 거짓으로.

저는 Learvel 5에서 404 페이지를 설정하는 데 필요한 정보를 찾지 못했지만 검색했습니다. 어떤 도움을 주셔서 감사합니다.

+1

다른 사용자 덕분에 해결책을 찾았습니다. ErrorServiceProvider에 $ handler-> missing()을 추가하면 트릭을 수행합니다. 희망이 fuutre에있는 다른 사람들을 도울 수 있기를 바랍니다. –

+2

귀하의 질문에 대한 답변으로 게시하십시오. –

+3

중복 : http://stackoverflow.com/questions/26630985/how-do-i-catch-exceptions-missing-pages-in-laravel-5 –

답변

21

리소스/뷰/오류로 이동하여 404 페이지에서 원하는 내용으로 404.blade.php 파일을 만들고 Laravel이 나머지를 처리합니다.

+2

이 방법은 작동하지만 개발자가 완전히 통제하지는 않습니다. 레이아웃 내에서 오류보기를 사용할 수 없습니다. 내 대답을 볼 수있어. –

+4

와우, 그러한 광고 @HaykAghabekyan – ozanmuyes

+0

@HaykAghabekyan, 핵심 파일을 편집 중이므로 답변이 적합하지 않습니다. 이 대답은 @extends() 태그를 사용하여 레이아웃 내부에서 오류보기를 사용할 수 있기 때문에 정확합니다. – manix

8

당신은, 당신은 내가 case 문 접근 방식을 좋아

public function render($request, Exception $e) 
{ 
    if ($this->isHttpException($e)) { 

     $statusCode = $e->getStatusCode(); 

     switch ($statusCode) { 

      case '404': 
       return response()->view('layouts/index', [ 
        'content' => view('errors/404') 
       ]); 
     } 
    } 
    return parent::render($request, $e); 
} 
+0

이것은 올바른 대답입니다. Twig 또는 Blade 이외의 다른 템플릿 엔진을 사용하는 경우 일반보기처럼로드 할 수 있습니다. 하지만, 나는 'layouts/index'가 무엇인지 물어야 만합니다. 나는 둘 모두를'errors.404'라는 이름으로 만들었고 효과가있었습니다. – enchance

+0

레이아웃은 내 기본 템플릿 파일 인 index와 같은 기본 템플릿 파일을 유지하기위한 내 폴더입니다. –

+0

예, 이것이 올바른 것으로 동의했습니다. – heisian

1

노호 코드를 추가하여 /app/Exceptions/Handler.php의 변화를 할 수있는 글로벌 솔루션을 갖고 싶어하지만 수준을가는 몇 가지 문제가있는 경우 깊은.

Route::any('/{page?}',function(){ 
    return View::make('errors.404'); 
})->where('page','.*'); 
1

Laravel 5에서 단순히 자원/뷰/오류 아래의 사용자 정의 404.blade.php을 넣을 수 및 그것 뿐이다 :

그러나,이 모든 오류를 잡는다. 500과 같은 다른 오류의 경우 당신은 당신의 응용 프로그램에서 다음을 시도 할 수/예외 사항이/Handler.php :

public function render($request, Exception $e) 
{ 

    if (! config('app.debug') && ! $this->isHttpException($e)) { 
     return response()->view('errors.500'); 
    } 

    return parent::render($request, $e); 
} 

그리고 500 HTTP 예외 사항

1

Laravel 5 동일한 작업을 수행 이미이 미리 정의 된 렌더링있다 app/Exceptions/Handler.php 아래의 메소드 (43 행). parent :: render 앞에 리디렉션 코드를 삽입하기 만하면됩니다. 이와 같이,

public function render($request, Exception $e) 
{ 
    if ($e instanceof ModelNotFoundException) 
    { 
     $e = new NotFoundHttpException($e->getMessage(), $e); 
    } 

    //insert this snippet 
    if ($this->isHttpException($e)) 
    { 
     $statusCode = $e->getStatusCode(); 
     switch ($statusCode) 
     { 
      case '404': return response()->view('error', array(), 404); 
     } 
    } 

    return parent::render($request, $e); 
} 

참고 : 내보기는 리소스 /보기에 있습니다. 당신은 어떻게 든 당신이 원하는 곳이면 어디든지 둘 수 있습니다.