Php Laravel 4-处理404错误

Php Laravel 4-处理404错误,php,frameworks,routing,laravel,laravel-4,Php,Frameworks,Routing,Laravel,Laravel 4,我知道使用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' ));

我知道使用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'
));
但是要保持在同一个URL

例如:

我的URL现在是
localhost:8000/users/blat
(404错误)。我不想重定向到错误页面。我想看看
ErrorController@get404Error
在这个URL上


非常感谢。

如果您使用不同的路由,它将重定向到该路由,您可能需要立即呈现视图,在我看来,这是保持原样且不更改url的唯一方法:

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

您可以尝试以下方法:

App::missing(function($exception)
{
    return App::make('ErrorController')->get404Error($exception);
});
您的
错误控制器

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

您只需创建
ErrorController
类的实例并调用其
get404Error
方法。这样,您也将拥有来自
BaseController
类的变量,并且路由将保持不变

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

实际上,我在“BaseController”中有一些变量,我需要这些变量来处理错误。。。另一个想法?你需要展示更多的代码,你可以做很多事情,比如使用视图生成器,但是在这里我们可以做得更好,而不必看到你的实际代码是猜测。我不敢相信这个问题没有答案。是否真的只能用简单的视图而不是控制器操作来响应?