繁体   English   中英

404页面不适用于Laravel 5.4中的某些路由

[英]404 page not working for some routes in laravel 5.4

我有一条这样的路线:

web.php

Route::get('post/{slug}', [
    'as'   => 'post.single',
    'uses' => 'PageController@getSingle',
]);

PageController.php

public function getSingle($slug)
{
    //some db stuff and returning an array to view
    return view('single', array('var1' => $var, 'var2' => $var2));
}

帖子中有一条信息,该信息存储在数据库中。 如果存在带有slug的帖子,例如: first-post然后路线mysite.com/post/first-post可以正常工作。 但是,如果不存在某个帖子,例如: second-post然后路线mysite.com/post/second-post给我一个错误:

**ErrorException**
Trying to get property of non-object

我希望它显示404错误页面(已经配置了404页面) mysite.com/hellohello提供了404页面,因此它按预期工作。

有什么建议我该怎么办?

firstOrFail有一个整洁的firstOrFail方法,该方法要么返回它找到的第一个实体,要么如果没有找到该实体,则抛出ModelNotFoundException,laravel将其转换为404页。

public function getSingle($slug)
{
    $var = YourModel::where('slug', $slug)->firstOrFail();
    return view('single', compact('var'));
}

我认为您应该像这样更新您的功能:并且您不能在返回视图中关闭方括号

public function getSingle($slug)
{

    //some db stuff and returning an array to view
    return view('single', array('var' => $var));
}

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));
}

您可以了解如何使用laravel 5.4从数据库获取第一条记录

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM