【问题标题】:Facade\Ignition\Exceptions\ViewException?Facade\Ignition\Exceptions\ViewException?
【发布时间】:2020-02-12 20:00:10
【问题描述】:

我正在关注 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);
    }
}

Show.blade

@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
{
    //
}

数据库

[https://i.stack.imgur.com/yswTb.png][1]

【问题讨论】:

  • 你能添加你的博客模型类吗?
  • 当然...在原帖中添加了它
  • 你确定我们的文件名是Blog.php,大写为B
  • 是的,它的 Blog.php 带有大写 B。

标签: php laravel


【解决方案1】:

更新

public function show($id)  {

到

public function show(Blog $blog) {

【讨论】:

  • 导致 404。
【解决方案2】:

您确定您的所有blogs 都具有title 属性吗?似乎有些博客缺少它。如果是这种情况,您可以在刀片中使用一些 ternary 运算符来检查数据是否存在,这样就不会出现异常。简单示例:

{{$blog->title ? $blog->title : 'No title' }}

【讨论】:

    【解决方案3】:

    这最终成为一个愚蠢的问题,因为我创建了两个带有 $id 1 和 2 的帖子,它正在寻找那些特定的 id。一旦我输入了 $id 为 1 或 2 的正确 url,它就会在博客中找到“title”id。

    【讨论】:

      【解决方案4】:

      首先,您必须将这一行 use App\blog; 编辑为 use App\Blog;,然后尝试像 return view('blogs.show', compact('blog')); 或 return view('blogs.show', ['blog' =&gt; $blog]); 那样共享变量

      【讨论】:

      • 你的意思是compact而不是作曲家?
      • 当我改变这一行 App\blog;到 App\Blog 我收到语法错误 T_USE。
      • 是的,我的意思是 compact 抱歉这个错误我刚刚编辑了答案.. 关于语法错误 T_use 检查你是否已经把 ; 像 use App\Blog; 那样放了,这取决于你的名字@ 987654329@班级。
      【解决方案5】:

      你可以使用

      Database: Query Builder

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

      【讨论】:

      • 使用此代码时找不到类 'App\Http\Controllers\DB'。
      • @PT-83 在您的 BlogController.php 顶部添加这一行:使用 Illuminate\Support\Facades\DB;并检查更新的答案
      • 我得到 dd '没有具有此 ID 的帖子"。
      • 嗨@Foued MOUSSI 是的,我在原始帖子中添加了一个链接(屏幕截图),显示了我在tableplus 上的数据库。如果有什么特别之处,请告诉我。
      猜你喜欢
      • 2020-10-17
      • 2020-09-07
      • 2020-04-23
      • 2020-05-10
      • 2020-09-24
      • 2023-04-01
      • 2020-09-17
      • 2020-08-20
      • 2020-08-09
      相关资源
      最近更新 更多