我正在尝试输出我的帖子,在特定的页面中,我调用一个带有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
答案 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"
]