2013-07-31 34 views
11

Tôi đang sử dụng khuôn khổ Laravel4 và tôi đã gặp phải vấn đề này.Laravel: Cách phản hồi với lỗi 404 tùy chỉnh tùy thuộc vào tuyến đường

Tôi muốn hiển thị lỗi 404 tùy chỉnh tùy thuộc vào url được yêu cầu.

Ví dụ:

Route::get('site/{something}', function($something){ 
    return View::make('site/error/404'); 
}); 

Route::get('admin/{something}', function($something){ 
    return View::make('admin/error/404'); 
}); 

Giá trị của '$something' là không quan trọng.

Ví dụ được hiển thị chỉ hoạt động với một phân đoạn, tức là 'site/foo' hoặc 'admin/foo'. Nếu ai đó yêu cầu 'site/foo/bar' hoặc 'admin/foo/bar' bọ rùa sẽ ném lỗi 404 mặc định.

App::missing(function($exception){ 
    return '404: Page Not Found'; 
}); 

Tôi đã cố tìm thứ gì đó trong tài liệu Laravel4 nhưng không có gì phù hợp với tôi. Vui lòng trợ giúp :)

Cảm ơn bạn!

Trả lời

28

Trong app/start/global.php

App::missing(function($exception) 
{ 
    if (Request::is('admin/*')) 
    { 
     return Response::view('admin.missing',array(),404); 
    } 
    else if (Request::is('site/*')) 
    { 
     return Response::view('site.missing',array(),404); 
    } 
    else 
    { 
     return Response::view('default.missing',array(),404); 
    } 
}); 

Theo quan điểm của bạn, bạn có thể tìm $something với {{ Request::path(); }} hoặc {{ Request::segment(); }}

+0

Có một cuộc thảo luận tốt đẹp của này tại địa chỉ: http://blog.danharper.me/blog/2013/ 01/01/exceptions-in-laravel-4/ – ptim

+1

Bất cứ ai có một phiên bản cập nhật này cho Laravel 5.5 ...? – Inigo

Các vấn đề liên quan