Фасад \ \ воспламенением от исключений \ ViewException? - PullRequest
0 голосов
/ 02 февраля 2020

Я слежу за laracast и достиг той части, которую не могу понять. При попытке отобразить заголовок {{$blog->title}} я получаю следующую ошибку:

При попытке получить свойство 'title' необъекта (View: / 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]

Ответы [ 5 ]

0 голосов
/ 12 февраля 2020

Это оказалось глупой проблемой, потому что я создал две записи с $ id 1 и 2, он искал эти конкретные c идентификаторы. Как только я ввел правильный URL с идентификатором $ 1 или 2, он нашел идентификатор «title» в блоге.

0 голосов
/ 03 февраля 2020

Вы уверены, что все ваши blogs имеют title собственность? Кажется, что некоторые блоги пропускают это. Если это так, вы можете использовать некоторые троичные операторы в своем блейде, чтобы проверить, существуют ли данные, чтобы вы не получили исключения. Простой пример:

{{$blog->title ? $blog->title : 'No title' }}
0 голосов
/ 03 февраля 2020

Вы можете использовать

База данных: 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);

    }
}
0 голосов
/ 03 февраля 2020

Обновление

public function show($id)  {

до

public function show(Blog $blog) {
0 голосов
/ 02 февраля 2020

Сначала вам нужно отредактировать эту строку use App\blog; в use App\Blog;, а затем попытаться использовать переменную, подобную этой return view('blogs.show', compact('blog')); или return view('blogs.show', ['blog' => $blog]);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...