为什么我必须经常收到此错误?

时间:2019-11-02 21:52:13

标签: php laravel variables laravel-blade

Hello World!

我有一个小问题,我不知道如何解决。我尝试了一些东西,但没有任何效果。错误看起来像这样:

  

未定义变量:发布(查看:../ resources / views / blog / posts / index.blade.php)

这是我在控制器中的代码:

<?php

public function index() {
    $posts = Post::orderBy('created_at','ASC')->paginate(15);
    return view('blog.posts.index')->withPosts($posts);
}

public function post($slug) {

    // Fetch from the database based on slug.
    $post = Post::where('slug', '=', $slug)->first();

    // Return the view and pass the post object.
    return view('blog.posts.post')->withPost($post);
}

这是视图代码的一部分:

<!-- Main Content -->
<div class="container" id="load-data">
  <div class="row">
    <div class="col-lg-8 col-md-10 mx-auto">
      @foreach($posts as $post)
      <div class="post-preview">
        <a href="{{ url('blog/posts/'.$post->slug) }}" role="button">
          <h2 class="post-title">
            {{ $post->title }}
          </h2>
          <h3 class="post-subtitle">
            {{ $post->desc }}
          </h3>
        </a>
        <p class="post-meta">Posted on {{ date('F j, Y', strtotime($post->created_at)) }}</p>
      </div>
      <hr> @endforeach
    </div>
  </div>
</div>

还有路线:

Route::prefix('/blog/posts')->group(function () {

Route::get('/', 'BlogController@index')->name('posts'); });

谢谢您的回答!

1 个答案:

答案 0 :(得分:1)

Laravel有两种主要的方式将数据(变量)从Controller发送到View。如他们的文档(https://laravel.com/docs/5.8/views)所述,第一种方法是将链接到视图功能。

return view('blog.posts.post')->with('post', $post);

您可以根据需要随意链接,但是如果您需要向视图发送大量变量,这并不是很干净。如@ Ben96所指出的,更受欢迎的方法是使用PHP的 compact 函数(https://www.php.net/manual/en/function.compact.php)作为 view 函数的第二个参数。 compact 本质上是将一串变量名及其键和值转换为一个关联数组,从而可以在视图中使用它们。