2013-11-23 241 views
4

我知道,處理404錯誤與laravel 4是在應用寫入/啓動/ global.php:Laravel 4 - 處理404錯誤

App::missing(function($exception) 
{ 
    return Redirect::route('404_Error'); 
}); 

但實際上我想利用這條航線:

Route::get('error', array(
    'as' => '404_Error', 
    'uses' => '[email protected]' 
)); 

但留在相同的URL。

例子:

我的URL現在是localhost:8000/users/blat(404錯誤)。我不想重定向到錯誤頁面。我想在此URL處看到[email protected]

非常感謝。

+0

我不敢相信這個問題沒有答案。是否真的只能用簡單的視圖而不是控制器操作來回應? – Nick

回答

0

如果您使用的是不同的路線,它會重定向到這條路線,你可能會需要渲染你的看法馬上,國際海事組織它是唯一的方式留你在哪裏,沒有你的網址改爲:

App::missing(function($exception) 
{ 
    return View::make('404_Error'); 
}); 
+0

其實,我在'BaseController'中有一些變量,我需要這個錯誤......另一個想法是什麼? – user3025333

+0

您需要展示更多的代碼,您可以做很多事情,比如使用View Composer,但是我們可以在這裏做的更好,而不會看到您的實際代碼。 –

5

您可以嘗試這樣的事:

App::missing(function($exception) 
{ 
    return App::make('ErrorController')->get404Error($exception); 
}); 

ErrorController

class ErrorController extends BaseController { 
    //... 
    public function get404Error($exception) 
    { 
     //... 
     $data = ...; 
     return View::make('error_view')->with('data', $data); 
    } 
} 
0

您可以創建ErrorController類的實例並調用其get404Error方法。這樣你也可以從你的BaseController類中獲得變量,路線將保持不變。

App::missing(function($exception) 
{ 
    $errorController = new ErrorController(); 
    return $errorController->get404Error(); 
});