在我的控制器中,我通过AJAX调用来调用它:
$data = Lib::index();
$view = View::make('index')
->with('data', $data)
->render();
return $view;
上述操作失败,因为我的数据库中不存在正确的表。
在Lib Index方法中,我抓住了这个失败:
catch (QueryException $e) {
header('HTTP/1.0 404 Not found');
exit;
}
我使用jquery调用ajax调用的.fail延迟方法来捕获上述错误。
以上所有工作(并按预期失败),直到我开始在视图中调用$ data var。
类似的事情:
@foreach($data as $asset)
我收到错误:
Trying to get property of non-object
但是,由于捕获了查询错误,甚至不应该处理视图。
我在teh视图中尝试过像isset和isempty这样的东西,但它仍处理视图。
为什么视图仍在处理中,如何阻止它?
答案 0 :(得分:0)
我不确定是什么导致这种情况,但有几个简单的解决方案:
而不是尝试设置404标头并返回,请使用Laravel的HTTP Exceptions。
如果您必须在Lib::index()
方法中捕获该错误,则可以尝试重新抛出\Symfony\Component\HttpKernel\Exception\NotFoundHttpException
。然后,Laravel的默认错误处理程序将捕获它并将其返回给客户端。
最后,第三种方法是在Lib::index()
方法之外捕获异常,然后返回不同的异常。
例如:
try {
$data = Lib::index();
$view = View::make('index')
->with('data', $data)
->render();
return $view;
} catch(QueryException $e) {
header('HTTP/1.0 404 Not found');
exit;
}