"未定义的变量:类别(查看:C:\ xampp \ htdocs \ blog \ resources \ views \ partials \ _popular.blade.php)"

时间:2018-03-18 01:23:59

标签: php laravel

抱歉,这里的问题是什么?我无法查看我发布的一些帖子,但我可以查看其他帖子。我认为一切都得到了纠正,所以请任何可以帮助的人!

我的意思是,我之前在数据库中创建了一些帖子,我可以很好地查看它们......但后来我遇到了问题..当我创建新帖子或更新现有记录(帖子)时,它失败了加载视图并抛出上述错误。

控制器:PostController.php

<?php

namespace App\Http\Controllers\User;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Model\user\Post;
use App\Model\user\Tag;
use App\Model\user\Category;

class PostController extends Controller
{

    public function post(Request $request, Post $slug)
    {


            $tags = Tag::all();
            $posts = Post::all();
            $categories = Category::all();

            $nextPost = Post::where('id', Post::where('id', '>', $slug->id)->min('id'))->firstOrFail();

            $previousPost = Post::where('id', Post::where('id', '<', $slug->id)->max('id'))->firstOrFail();

            $relatedPosts = Post::where('category_id', $slug->category_id)->simplePaginate(3);

            $latestNews = Post::orderBy('id', 'DESC')->get();

            return view('posts.show', compact('tags', 'posts', 'categories', 'latestNews', 'previousPost', 'nextPost', 'relatedPosts'))->with('post', $slug);

    }

}

view:post.blade.php

@extends('layouts.app')

@section('content')

    <section id="contentSection">
      <div class="row">
        <div class="col-lg-8 col-md-8 col-sm-8">
          <div class="left_content">
            <div class="single_page">
              <ol class="breadcrumb">
                <li><a href="/">Home</a></li>
                <li>
                    <a href="category/{{ $post->category->slug }}">

                        {{ $post->category->name }}

                    </a>
                </li>
                <li class="active">
                      {{ $post->title }}
                </li>
              </ol>
              <h1>{{ $post->title }}</h1>
              <div class="post_commentbox"> 
                <a href="#"><i class="fa fa-user">
                  </i>Carlton Ballet
                </a> 
                <span>
                  <i class="fa fa-calendar"></i>{{ $post->created_at->diffForHumans()}}
                </span> 
                <span class="fa fa-tags"></span>

                    <a href="category/{{ $post->category->slug }}" style="border:1px solid #798992;border-radius:5px;padding:3px;">{{ $post->category->name }}</a>

              </div>
              <div class="single_page_content"> <img class="img-center" src="../images/single_post_img.jpg" alt="">

                {!! htmlspecialchars_decode($post->body) !!}

                <h3>Tag Clouds</h3>
                <hr/>
              @foreach($post->tags as $tag)

                <small class="pull-right" style="margin-right:5px;border-radius:5px;border:1px solid #9BCB3B;padding:5px;">

                  {{ $tag->name }}

                </small>

              @endforeach
              </div>

              <div class="social_link">
                <ul class="sociallink_nav">
                  <li><a href="#"><i class="fa fa-facebook"></i></a></li>
                  <li><a href="#"><i class="fa fa-twitter"></i></a></li>
                  <li><a href="#"><i class="fa fa-google-plus"></i></a></li>
                  <li><a href="#"><i class="fa fa-linkedin"></i></a></li>
                  <li><a href="#"><i class="fa fa-pinterest"></i></a></li>
                </ul>
              </div>
              <div class="related_post">

                <h2>Related Post <i class="glyphicon glyphicon-stats"></i>&nbsp;&nbsp;{{ count($relatedPosts) - 1 }}</h2>

                <ul class="wow fadeInDown animated">
                  <li style="float:left;">
                      @foreach($relatedPosts as $RelatedPost)
                          @if(count($relatedPosts) > 0 && ($post->slug !== $RelatedPost->slug))

                              <div class="media"> <a class="media-left" href="/post" > <img src="../images/post_img1.jpg" alt=""> </a>

                                <div class="media-body"> 

                                    <a class="catg_title" href="/post/{{$RelatedPost->slug}}"> {{$RelatedPost->title}}</a> 

                                </div>

                              </div>

                          @endif
                      @endforeach
                  </li>

                </ul>
              </div>
              {{ $relatedPosts->links() }}
            </div>
          </div>
        </div>
        <nav class="nav-slit"> 
          <a class="prev" href="/post/{{ $previousPost->slug }}"> <span class="icon-wrap"><i class="fa fa-angle-left"></i></span>
            <div>
              <h3>City Lights</h3>
              <img src="../images/post_img1.jpg" alt=""/> 
            </div>
          </a> 
          <a class="next" href="/post/{{ $nextPost->slug }}"> <span class="icon-wrap"><i class="fa fa-angle-right"></i></span>
            <div>
              <h3>Street Hills</h3>
              <img src="../images/post_img1.jpg" alt=""/> 
            </div>
          </a> 
        </nav>

          @include('partials._popular')

      </div>
    </section>

@endsection

包括:_popular.blade.php

<div class="col-lg-4 col-md-4 col-sm-4">
        <aside class="right_content">
          <div class="single_sidebar">
            <h2><span>Popular Post</span></h2>
            <ul class="spost_nav">
              <li>
                <div class="media wow fadeInDown"> <a href="/post" class="media-left"> <img src="{{asset('images/post_img2.jpg')}}" alt=""> </a>
                  <div class="media-body"> <a href="/post" class="catg_title"> This is the post body paragraph. How do you tell about it? Is it cool? 1</a> </div>
                </div>
              </li>
              <li>
                <div class="media wow fadeInDown"> <a href="/post" class="media-left"> <img src="{{asset('images/post_img2.jpg')}}" alt=""> </a>
                  <div class="media-body"> <a href="/post" class="catg_title"> This is the post body paragraph. How do you tell about it? Is it cool? 2</a> </div>
                </div>
              </li>
              <li>
                <div class="media wow fadeInDown"> <a href="/post" class="media-left"> <img src="{{asset('images/post_img2.jpg')}}" alt=""> </a>
                  <div class="media-body"> <a href="/post" class="catg_title"> This is the post body paragraph. How do you tell about it? Is it cool? 3</a> </div>
                </div>
              </li>
              <li>
                <div class="media wow fadeInDown"> <a href="/post" class="media-left"> <img src="{{asset('images/post_img2.jpg')}}" alt=""> </a>
                  <div class="media-body"> <a href="/post" class="catg_title"> This is the post body paragraph. How do you tell about it? Is it cool? 4</a> </div>
                </div>
              </li>
            </ul>
          </div>
          <div class="single_sidebar">
            <ul class="nav nav-tabs" role="tablist">
              <li role="presentation" class="active"><a href="#category" aria-controls="home" role="tab" data-toggle="tab">Categories</a></li>
              <li role="presentation"><a href="#comments" aria-controls="messages" role="tab" data-toggle="tab">Hit Songs</a></li>
            </ul>
            <div class="tab-content">
              <div role="tabpanel" class="tab-pane active" id="category">
                <ul>

                  @foreach($categories as $category)

                    <li class="cat-item"><a href="/post/category/{{ $category->slug }}">
                      {{ $category->name }}</a>
                    </li>

                  @endforeach

                </ul>
              </div>
              <div role="tabpanel" class="tab-pane" id="comments">
                <ul class="spost_nav">
                  <li>
                    <div class="media wow fadeInDown"> <a href="/post" class="media-left"> <img src="{{asset('images/post_img2.jpg')}}" alt=""> </a>
                      <div class="media-body"> <a href="/post" class="catg_title"> This is the post body paragraph. How do you tell about it? Is it cool? 1</a> </div>
                    </div>
                  </li>
                  <li>
                    <div class="media wow fadeInDown"> <a href="/post" class="media-left"> <img src="{{asset('images/post_img2.jpg')}}" alt=""> </a>
                      <div class="media-body"> <a href="/post" class="catg_title"> This is the post body paragraph. How do you tell about it? Is it cool? 2</a> </div>
                    </div>
                  </li>
                  <li>
                    <div class="media wow fadeInDown"> <a href="/post" class="media-left"> <img src="{{asset('images/post_img2.jpg')}}" alt=""> </a>
                      <div class="media-body"> <a href="/post" class="catg_title"> This is the post body paragraph. How do you tell about it? Is it cool? 3</a> </div>
                    </div>
                  </li>
                  <li>
                    <div class="media wow fadeInDown"> <a href="/post" class="media-left"> <img src="{{asset('images/post_img2.jpg')}}" alt=""> </a>
                      <div class="media-body"> <a href="/post" class="catg_title"> This is the post body paragraph. How do you tell about it? Is it cool? 4</a> </div>
                    </div>
                  </li>
                </ul>
              </div>
            </div>
          </div>
          <div class="single_sidebar wow fadeInDown">
            <h2><span>Sponsor Advertisement</span></h2>

            <!--a class="sideAdd" href="#"><img src="{{asset('images/add_img.jpg')}}" alt=""a--> 
            <div class="adplugg-tag"></div>

          </div>

          <div class="single_sidebar wow fadeInDown">
            <!-- Enter something here-->
          </div>
        </aside>
      </div>

1 个答案:

答案 0 :(得分:0)

虽然子视图应该从父视图继承,但尝试将categories数组显式传递给_popular.blade.php

@include('partials._popular', ['categories' => $categories'])

修改

如果将compact语句与with?

结合使用会发生什么
$data = array_merge(
    compact('tags', 'posts', 'categories', 'latestNews', 'previousPost', 'nextPost', 'relatedPosts'),
    ['post' => $slug]
);
return view('posts.show', $data);