【问题标题】:Laravel: Undefined variable: posts (View: cant solveLaravel:未定义变量:帖子(查看:无法解决
【发布时间】:2020-04-28 00:10:48
【问题描述】:

所以我有一个问题已经困扰了我好几天了。我想在我的主页上显示我的帖子,这些帖子已经在我的其他页面上显示。我想我已经找到了信息未显示的原因,这是由于页面的路线造成的。视图看起来很好并且工作正常,但是我的控制器是问题:

Web.php

 Route::get('/', 'PageController@index');
 Route::get('/welcome', 'HomeController@index1');
 Route::get('/services', 'PageController@services');
 Route::get('/register', 'PageController@register');
 Route::get('/Create', 'PageController@Create');
 Route::get('/search', 'PageController@search');
 Route::get('/payment', 'PageController@Payment');

 Route::resource('posts', 'PostsController');
 Route::resource('search', 'SearchController');
 Route::resource('reviews', 'ReviewsController');
 Route::resource('postings', 'HomeController');

HomeController.php

    public function index()
{
    return view('home');
}
public function index1()
{
    $postings = Post::all();
    return view('Pages.welcome', compact('postings'));
}

Welcome.blade.php

 @if(count($postings) > 1)
@foreach($postings as $post)
  <h2><a href="/posts/{{$post->id}}">{{$post->title}}</a></h2>
@endforeach

@else
  </p>no posts found</p>
@endif

问题出在我的 WEB.PHP 中。 PageController@index 将页面定向到主页,其中 HomeController 是保存索引的控制器。然后我决定在 HomeController 中创建一个函数,允许我显示帖子,但是我不断收到错误“未定义的错误”。总结一下我将如何在已经有索引的现有控制器中插入一个函数。

【问题讨论】:

标签: laravel


【解决方案1】:

您的视图中没有 $postings 变量,请不要访问它。这并不意味着你不能做你想做的事。

您可以滥用 if 语句的解析方式。如果您的 if 语句中有 &amp;&amp; 运算符,则如果第一个条件失败,它将不会检查辅助条件。

会失败

@if ($postings)

会起作用

@if (false && $postings)

要检查变量是否存在而不访问它,您可以使用isset(),即PHP 函数。这将创建不会访问$postings 的首选语句(如果它不存在)。所以试试下面的代码。

 @if(isset($postings) && count($postings) > 1)
     @foreach($postings as $post)
        <h2><a href="/posts/{{$post->id}}">{{$post->title}}</a></h2>
     @endforeach
 @else
     </p>no posts found</p>
 @endif

【讨论】:

  • 好的,我现在已经尝试过了,我的页面出现了,但是即使我的数据库中有帖子,我也找不到任何帖子
  • 但是当您链接到您的家庭控制器时,您不包含帖子?公共函数索引(){返回视图('home'); }
  • 请参阅我创建了一个名为 index1 的新函数,它应该返回帖子。我应该在我的页面上看到最多 4 个帖子
  • 是的,欢迎使用我的刀片文件。我的 HomeController 控制该页面(obvs),已经有一个名为 index 的函数,但我需要创建一个新函数,所以我将其命名为 index1 来显示帖子
  • 我将如何执行 dd$postings ? (对不起,我的 laravel 体验不是很好)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-22
  • 2014-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多