我的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>
谢谢你的时间!
答案 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>