我知道用laravel 4处理404错误是在app / start / global.php上写:
App::missing(function($exception)
{
return Redirect::route('404_Error');
});
但实际上我想使用这条路线:
Route::get('error', array(
'as' => '404_Error',
'uses' => 'ErrorController@get404Error'
));
但要保持相同的网址。
示例:
我的网址现在是localhost:8000/users/blat
(404错误)。我不想重定向到错误页面。我希望在此网址上看到ErrorController@get404Error
。
非常感谢。
答案 0 :(得分: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);
}
}
答案 1 :(得分:0)
如果您使用不同的路线,它将重定向到该路线,您可能需要立即渲染您的视图,IMO这是保持原状的唯一方式,而不是更改您的网址:
App::missing(function($exception)
{
return View::make('404_Error');
});
答案 2 :(得分:0)
您只需创建ErrorController
类的实例并调用其get404Error
方法即可。这样你就可以获得BaseController
类中的变量,路由将保持不变。
App::missing(function($exception)
{
$errorController = new ErrorController();
return $errorController->get404Error();
});