вид не работает в Laravel - PullRequest
0 голосов
/ 03 мая 2018

Я новичок в Laravel и делаю свой первый проект под названием блог. Для публикации статьи я могу получить данные, но я пытаюсь отобразить комментарий читателя на странице индекса чуть ниже статьи, извлекая из базы данных, но это выдает ошибку (Для информации, я уже вставил строку из xammp только для извлечения). Вот код для PostController.php

public function index()
{
    //$show = Post::all();
    $show = Post::orderBy('id','desc')->paginate(1);
   return view('pages/blog')->with('post',$show);
}


public function comment()
{
    $show = readerComment::all();
    return view('pages/blog')->with('commentShow',$show);
}

На индексных страницах или blog.blade.php

@if(count($post)>0)
                            @foreach($post as $article)
                                <div class = "row">
                                    <div class="col-md-12">
                                        <h3 class="text-center">{{$article->title}}</h2>
                                        </div>
                                    </div>
                                <div class="row">
                                    <div class="col-md-12">
                                        <p>{!!$article->article!!}</p>
                                    </div>
                                </div>

                            <!-- Comment section -->
                            <div class = "comment">
                                <h3>Comments</h3>

                                @foreach($commentShow as $commShow)
                                    <div class = "row">
                                        <div class = "col-md-12">
                                        <p>{{$commShow->comment}}</p>
                                        <p>{{$commShow->name}}</p>
                                        </div>
                                    </div>
                                @endforeach

                            </div>

И в веб-маршруте

 Route::resource('posts','PostController');
 Route::get('/','PostController@comment');

Я получаю ошибку как

Undefined variable: post (View: C:\xampp\htdocs\blogging\resources\views\pages\blog.blade.php)

Любая помощь будет оценена. Спасибо

Ответы [ 4 ]

0 голосов
/ 03 мая 2018

Здесь вы определяете свою коллекцию Eloquent моделей как $commentShow:

return view('pages/blog')->with('commentShow',$show);

На ваш взгляд, вы используете переменную $post. Вам нужно изменить один из них, чтобы он соответствовал другому.

0 голосов
/ 03 мая 2018

Ваш клинок хорошо выглядит без ошибок, но давайте попробуем это посмотреть ..

@extends('layouts.app')
@section('content')
                    @if(count($post)>0)
                        @foreach($post as $article)
                            <div class = "row">
                                <div class="col-md-12">
                                    <h3 class="text-center">{{$article->title}}</h2>
                                    </div>
                                </div>
                            <div class="row">
                                <div class="col-md-12">
                                    <p>{!!$article->article!!}</p>
                                </div>
                            </div>

                        <!-- Comment section -->
                        <div class = "comment">
                            <h3>Comments</h3>

                            @foreach($post as $commShow)
                                <div class = "row">
                                    <div class = "col-md-12">
                                    <p>{{$commShow->comment}}</p>
                                    <p>{{$commShow->name}}</p>
                                    </div>
                                </div>
                            @endforeach

                    </div>@endsection
0 голосов
/ 03 мая 2018

в дополнение к этому:

При использовании метода ->with() первый передаваемый ему параметр имеет вид имя переменной, доступной в представлении. Так что за комментарий часть вы делаете этот звонок ->with('commentShow',$show); еще на ваш взгляд вы пытаетесь получить к нему доступ через $post. Измените эту строку @foreach($post as $commShow) на @foreach($commentShow as $commShow)

измените код просмотра на это: (обратите внимание, измененное имя переменной в секунду @foreach)

@if(isset($post) && !empty($post)) 
@foreach($post as $article)
<div class="row">
    <div class="col-md-12">
        <h3 class="text-center">{{$article->title}}</h2>
    </div>
</div>
<div class="row">
    <div class="col-md-12">
        <p>{!!$article->article!!}</p>
    </div>
</div>
@endforeach
@endif

@if(isset($commentShow) && !empty($commentShow)) 
<!-- Comment section -->
<div class="comment">
    <h3>Comments</h3>

    @foreach($commentShow as $commShow)
    <div class="row">
        <div class="col-md-12">
            <p>{{$commShow->comment}}</p>
            <p>{{$commShow->name}}</p>
        </div>
    </div>
    @endforeach
</div>
@endif
0 голосов
/ 03 мая 2018

Сделай так,

public function index()
{
    $posts = Post::orderBy('id','desc')->paginate(1);
   return view('pages.blog',compact('posts'));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...