2013-11-23 248 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(); 
});