[英]404 page not working for some routes in laravel 5.4
I have a route like this: 我有一条这样的路线:
web.php web.php
Route::get('post/{slug}', [
'as' => 'post.single',
'uses' => 'PageController@getSingle',
]);
PageController.php PageController.php
public function getSingle($slug)
{
//some db stuff and returning an array to view
return view('single', array('var1' => $var, 'var2' => $var2));
}
A post has a slug which is stored in the database. 帖子中有一条信息,该信息存储在数据库中。 If a post exists with slug, example: first-post
Then the route mysite.com/post/first-post
works as expected. 如果存在带有slug的帖子,例如: first-post
然后路线mysite.com/post/first-post
可以正常工作。 But if a post doesn't exists, example: second-post
Then the route mysite.com/post/second-post
gives me an error: 但是,如果不存在某个帖子,例如: second-post
然后路线mysite.com/post/second-post
给我一个错误:
**ErrorException**
Trying to get property of non-object
I want it to show a 404 error page (404 page is already configured) mysite.com/hellohello
gives and 404 page, so it's working as expected. 我希望它显示404错误页面(已经配置了404页面) mysite.com/hellohello
提供了404页面,因此它按预期工作。
Any suggestion what should I do? 有什么建议我该怎么办?
Eloquent has a neat firstOrFail
method which either returns the first entity it finds, or if there is none throws an ModelNotFoundException which laravel converts to a 404 page. firstOrFail
有一个整洁的firstOrFail
方法,该方法要么返回它找到的第一个实体,要么如果没有找到该实体,则抛出ModelNotFoundException,laravel将其转换为404页。
public function getSingle($slug)
{
$var = YourModel::where('slug', $slug)->firstOrFail();
return view('single', compact('var'));
}
I think you should update your function like: And you can not close bracket in return view 我认为您应该像这样更新您的功能:并且您不能在返回视图中关闭方括号
public function getSingle($slug)
{
//some db stuff and returning an array to view
return view('single', array('var' => $var));
}
UPDATE after OP change the question content : OP更改问题内容后的UPDATE :
public function getSingle($slug)
{
//some db stuff and returning an array to view
$var = SOMEDBRESULT1;
$var2 = SOMEDBRESULT2;
return view('single', array('var1' => $var, 'var2' => $var2));
}
You can learn about how to get first record from db with laravel 5.4. 您可以了解如何使用laravel 5.4从数据库获取第一条记录 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.