我想为所有不存在的页面制作一个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的类别,那么不检查变量=== null 我可以获得默认但空的页面,它将具有200 http状态。这不正常。
我可以检查所有组件中的 null ,但我认为这不正确。
还有一个关于SQL错误的问题。 “id”字段有整数类型,如果我在浏览器中转到 app / category / 1sdsds ,我会得到
SQLSTATE [22P02]:无效的文本表示:7错误:整数的输入语法无效
我该如何解决?
谢谢!
答案 0 :(得分:0)
让Laravel知道你只接受整数
Route::get('/category/{category}', 'CategoryController@category')->where('category', '[0-9]+');
对于控制器
public function category(Category $category){...}
如果没有找到它应该返回404页面。您不需要另外检查,也不需要分配$ category,它已经被分配。
另一种方式是
public function category($category){
$category = Category::firstOrFail($category);
}