Laravel试图输出帖子,但控制器功能似乎工作错误

时间:2017-01-17 11:24:34

标签: php mysql routes laravel-5.3

我正在尝试输出我的帖子,在特定的页面中,我调用一个带有foreach的函数来加载所有帖子,而我的控制器中的函数是这样的:

public function getDashboard()
{
    $posts = Post::all();
    return view('dashboard', ['posts' => $posts]);
}

我的路线是这样的:

Route::get('/dashboard',[
    'uses' => 'PostController@getDashboard',
    'as' => 'dashboard'

]);

但在我未登录时尝试加载页面时出错 错误是这样的: 未定义的变量:帖子(查看:C:\ wamp64 \ www \ projectname \ resources \ views \ dashboard.blade.php)

你说的任何话都非常感谢。

(我使用Laravel 5.3.26)

在这里你说这是我的刀片,但我认为这不是问题所在:

@extends('layouts.master')
 @section('content')
  @foreach($posts as $post)
    <article class="post">
        <div class="media w3-border-left w3-border-blue">
            <div class="media-left media-top">

            </div>
            <div class="media-body">
                <header><h4 class="media-heading">{{ $post->title }}</h4></header>
                <p>{{ $post->body }}</p>
                <div class="info">
                    Posted by {{ $post->user->name }} on {{ $post->created_at }}
                </div>
                <div class="interaction">
                    <a href="#" class="like">Like</a> |
                    <a href="#" class="like">Dislike</a> |
                    <a href="#" class="like">Edit</a> |
                    <a href="#" class="like">Delete</a>
                </div>

            </div>
        </div>
        <br>
    </article>
  @endforeach
 @endsection

2 个答案:

答案 0 :(得分:0)

尝试:

public function getDashboard()
{
    $posts = Post::all();
    return view('dashboard', compact('posts'));
}

答案 1 :(得分:0)

我认为您的身份验证重定向到不同的控制器方法(不会注入帖子)。

在routes \ web.php中尝试一个作曲家

View::composer( ['dashboard.blade'] , function($view) {
   $action = app('request')->route()->getAction();
    dump($action);
    return $view->with(
        [
            'posts' => Post::all(), // you may need the fully qualified namespace here
        ]
    );
});

这有点脏,你不想保留这个,但是它应该给你一些进一步的信息 - 如果你可以发布转储的输出并检查登出时是否仍然注入帖子;

使用此方法我的转储输出

array:7 [▼
  "middleware" => array:2 [▼
    0 => "web"
    1 => "auth"
  ]
  "uses" => "App\Http\Controllers\Admin\TestController@home"
  "controller" => "App\Http\Controllers\Admin\TestController@home"
  "namespace" => "App\Http\Controllers\Admin"
  "prefix" => "/admin"
  "where" => []
  "as" => "admin.test"
]