【发布时间】:2018-10-09 18:14:53
【问题描述】:
我想为所有不存在的页面创建一个 404 页面。 例如我有这个代码
public function category($category)
{
$category = Category::find($category);
if($category === null) return abort(404); // return 404 page with 404 header status error
return view('pages.category', compact('category'));
}
我的路线文件
Route::get('/category/{category}', 'CategoryController@category');
我还有其他组件,例如子类别、文章、评论等。在第一种情况下,我可以输入 app/category/1234。
如果我的应用在类别表中没有 id = 1234 的类别,那么不检查 variable === null 我可以获得一个默认但为空的页面,它将具有 200 http 状态。这不正常。
我可以检查所有组件中的 null,但我认为它不正确。
还有一个关于 SQL 错误的问题。 “id”字段具有整数类型,如果我在浏览器中转到 app/category/1sdsds 我会得到
SQLSTATE[22P02]:文本表示无效:7 错误:整数输入语法无效
我该如何解决?
谢谢!
【问题讨论】:
-
不幸的是,检查 NULL 是在错误破坏其他任何东西之前捕获错误的唯一方法。有一种方法可以创建自定义 404 页面,只需在
resources/assets/views/errors/404.blade.php创建一个页面。您也可以使用findOrFail,如果发现错误,将调用 404。这是一种捷径。 -
@DimitriMostrey,谢谢。
标签: sql laravel postgresql laravel-5 eloquent