2013-12-09 211 views
7

我想指定,如果在比現有的其他航線的URL地址中輸入任何東西(在routes.php文件,然後顯示404頁laravel路由和404錯誤

我知道這一點:

App::abort(404); 

但我怎麼可以指定定義的一切,除了路由的部分

回答

29

您可以添加到您的filters.php文件:

App::missing(function($exception) 
{ 
    return Response::view('errors.missing', array(), 404); 
}); 

並創建errors.missing視圖文件以向他們顯示錯誤。

而且看一看的Errors & Logging docs

編輯

如果您需要將數據傳遞給視圖,第二個參數是一個數組,你可以使用:

App::missing(function($exception) 
{ 
    return Response::view('errors.missing', array('url' => Request::url()), 404); 
}); 
+0

如何傳遞Request:url()以取消刀片服務。 – alayli

+0

編輯回答你的問題。 –

+0

你好...有可能得到以前的網址在404頁面添加一個鏈接,如「轉到上一頁」? – SoldierCorp

5

我會建議把這個放入你的app/start/global.php,因爲這是Laravel默認處理它的地方(儘管filters.php也可以)。我通常使用的是這樣的:

/* 
|-------------------------------------------------------------------------- 
| Application Error Handler 
|-------------------------------------------------------------------------- 
| 
| Here you may handle any errors that occur in your application, including 
| logging them or displaying custom views for specific errors. You may 
| even register several error handlers to handle different types of 
| exceptions. If nothing is returned, the default error view is 
| shown, which includes a detailed stack trace during debug. 
| 
*/ 

App::error(function(Exception $exception, $code) 
{ 
    $pathInfo = Request::getPathInfo(); 
    $message = $exception->getMessage() ?: 'Exception'; 
    Log::error("$code - $message @ $pathInfo\r\n$exception"); 

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

    switch ($code) 
    { 
     case 403: 
      return Response::view('errors/403', array(), 403); 

     case 500: 
      return Response::view('errors/500', array(), 500); 

     default: 
      return Response::view('errors/404', array(), $code); 
    } 
}); 

接下來,只要一個errors文件夾內/views,把你的錯誤頁面內容在那裏。正如Antonio提到你可以通過array()傳遞數據。

我好心借了https://github.com/andrewelkins/Laravel-4-Bootstrap-Starter-Site

+0

正在使用'Laravel 5.2'和'app/start/global.php'不可用。你能提出我應該做什麼嗎? – Pankaj

0

這種方法這是我只是一個模板佈局顯示錯誤404的方法。只需將以下代碼添加到/app/start/global.php文件

App::missing(function($exception) 
{ 
    $layout = \View::make('layouts.error'); 
    $layout->content = \View::make('views.errors.404'); 
    return Response::make($layout, 404); 
}); 
1

只是使用Laravel 5人,有一種錯誤的觀點目錄文件夾中。您只需要在那裏創建一個404.blade.php文件,當沒有爲url指定路由時,它將呈現此視圖。