Laravel 5.5 - 想要调用$ slug函数时的非对象

时间:2018-01-21 02:42:16

标签: php laravel

我的Laravel项目没有什么问题,当打开Blog并尝试阅读帖子时,查看给我错误"试图获取非对象的属性(查看:/ Users / alex / Laravel / projekat /资源/视图/博客/ single.blade.php)"

Http文件夹中的文件 - Conttrolers:BlogController,PostController和Models:Blog

我有Blog文件夹,还可以(创建新博客,编辑,删除)。帖子找到$ id,并在网址上显示我。现在,我想在url中使用slug而不是id。我不想在BlogController中将公共函数show($ id)更改为($ slug),需要保留它们并从PostController创建新函数。

web.php

Route::get('blog/{slug}', ['as' => 'blog.single', 'uses' => 'PostController@getSingle'])->where('slug', '[\w\d\-\_]+');

Route::resource('blog', 'BlogController');

Auth::routes();

PostController中

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Blog;

class PostController extends Controller
{
    public function getSingle($slug)
    {
        // fetch from the DB base on slug
        $blog = Blog::where('slug', '=', $slug)->first();


        // retunr the view and pass in the post object
        return view('blog.single')->withBlog($blog);
    }
}

查看single.blade.php

<div class="vesti">
    <div class="col-lg-12 col-md-12">
        <h1>{{ $blog->naslov }}</h1>
        <p>{{ $blog->tekst }}</p>

        <hr/>
    </div>
</div>

谢谢你的时间!

1 个答案:

答案 0 :(得分:0)

您正在尝试从空变量中读取属性。

要避免这种情况,您应该在尝试访问其属性之前进行检查。例如:

<div class="vesti">
    <div class="col-lg-12 col-md-12">
        @if ($blog)
            <h1>{{ $blog->naslov }}</h1>
            <p>{{ $blog->tekst }}</p>
            <hr/>
        @else
            <h1>Error message</h1>
        @endif
    </div>
</div>