Laravel 4 - 处理404错误

时间:2013-11-23 16:24:56

标签: 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'
));

但要保持相同的网址。

示例:

我的网址现在是localhost:8000/users/blat(404错误)。我不想重定向到错误页面。我希望在此网址上看到ErrorController@get404Error

非常感谢。

3 个答案:

答案 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();
});