我对laravel 4
有疑问。我想处理发生的错误,例如404 Not Found
或任何其他错误。但我想在发生此类错误时调用控制器。我试过这个:
App::missing(function($exception)
{
return Response::view('errors.404', array('error'=>$exception), 404);
});
但实际上代码不是我的目的,我想要这样的东西:
//I know this code doesn't work, I've just wanted to show the claim
App::missing('HomeController@error');
App::error('HomeController@error');
// or ...
有没有办法在调用特定控制器的方法时处理错误?
答案 0 :(得分:5)
没有什么能阻止你创建控制器实例并调用你想要调用的方法。
App::missing(function($exception)
{
return App::make('HomeController')->error($exception);
});
答案 1 :(得分:3)
不,您无法直接使用App::missing('Controller@method')
,因为missing
方法调用error
方法,即:
public function error(Closure $callback)
{
$this['exception']->error($callback);
}
它接受一个闭包,但您可以从闭包中调用controller
- > method
。所以。像往常一样使用闭包声明处理程序,然后从闭包内调用控制器的方法。
作为旁注,我认为从闭包中调用一个方法没有任何重要性,因为你可能会从闭包中做同样的事情(很可能你会返回一个视图)然后为什么只是另一层?
<强>更新强>
App::missing(function($e){
// Use the model here you want
$var = 'SomeValue' from model
return Response::view('errors.404', array('error'=> $e, 'another' => $var));
});