[英]Invalid argument supplied for foreach() Facade\Ignition\Exceptions\ViewException
[英]Facade\Ignition\Exceptions\ViewException?
我正在關注 laracast 並達到了我無法弄清楚的部分。 嘗試顯示標題{{$blog->title}}
,出現以下錯誤:
試圖獲取非對象的屬性“標題”(視圖:/Users/***/Desktop/DigitalCulture/DG/resources/views/blogs/show.blade.php)”
數據庫:
public function up()
{
Schema::create('blogs', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('title');
$table->text('excerpt');
$table->text('body');
$table->timestamps();
});
}
路線:
Route::get('/', function () {
return view('welcome');
});
Route::get('/about', function () {
$blogs = DB::table('blogs')->take(3)->latest()->get();
return view('/about', [
'blogs' => $blogs
]);
});
Route::get('/blogs/{blog}', 'BlogsController@show');
控制器
<?php
namespace App\Http\Controllers;
use App\blog;
use Illuminate\Http\Request;
class BlogsController extends Controller
{
public function show($id)
{
$blog = Blog::find($id);
if( is_null($blog) ){
dd( 'There is no post with this id='.$id);
}
return view('blogs.show')->with('blog', $blog);
}
}
顯示刀片
@extends ('layout')
@section ('content')
<div id="wrapper">
<div id="page" class="container">
<div id="content">
<div class="title">
<h2> {{$blog->title}} </h2>
</div>
<p><img src="/images/banner.jpg" alt="" class="image image-full" /> </p>
<p>
{{$blog->body}}
</p>
</div>
</div>
</div>
@endsection
博客 PHP
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Blog extends Model
{
//
}
數據庫
更新
public function show($id) {
到
public function show(Blog $blog) {
你確定你所有的blogs
都有title
屬性嗎? 似乎有些博客缺少它。 如果是這種情況,您可以在刀片中使用一些三元運算符來檢查數據是否存在,這樣就不會出現異常。 簡單的例子:
{{$blog->title ? $blog->title : 'No title' }}
這最終成為一個愚蠢的問題,因為我創建了兩個帶有 $id 1 和 2 的帖子,它正在尋找那些特定的 ID。 一旦我輸入了 $id 為 1 或 2 的正確網址,它就會在博客中找到“標題”ID。
首先你必須編輯這一行use App\\blog;
use App\\Blog;
然后嘗試像這樣共享變量return view('blogs.show', compact('blog'));
或return view('blogs.show', ['blog' => $blog]);
您可以使用
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
use Illuminate\Http\Request;
class BlogsController extends Controller
{
public function show($id)
{
$blog = DB::table('blogs')->find($id);
if($blog){
return view('blogs.show')->with('blog', $blog);
}
dd( 'There is no post with this id='.$id);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.