php - Laravel 8 未定义的变量帖子
问题描述
我有一个错误..它说:
未定义变量:posts(查看:C:\xampp\htdocs\dinsospermasdes\bansus\resources\views\admin\posts\index.blade.php)
它在 home.blade.php 中像这样工作:
@foreach ($posts as $post)
<div class="card mb-4">
<img class="card-img-top" src="{{filter_var($post->post_image, FILTER_VALIDATE_URL) ? $post->post_image : '/storage/' . $post->post_image}}" alt="Card image cap">
<div class="card-body">
<h2 class="card-title">{{$post->title}}</h2>
<p class="card-text">{{Str::limit($post->body, '50', '....')}}</p>
<a href="{{route('post', $post->id)}}" class="btn btn-primary">Read More →</a>
</div>
<div class="card-footer text-muted">
Posted on {{$post->created_at->diffForHumans()}} by
<a href="#">{{$post->name}}</a>
</div>
</div>
@endforeach
但不能像这样在 admin/posts/index.blade.php 中工作:
@foreach($posts as $post)
<tr>
<td>{{$post->id}}</td>
<td>{{$post->title}}</td>
<td>
<img height="40px" src="{{filter_var($post->post_image, FILTER_VALIDATE_URL) ? $post->post_image : '/storage/' . $post->post_image}}">
</td>
<td>{{$post->created_at->diffForHumans()}}</td>
<td>{{$post->updated_at->diffForHumans()}}</td>
</tr>
@endforeach
这是 PostController.php:
class PostController extends Controller
{
//
public function index(){
$post = Post::all();
return view('admin.posts.index');
}
public function show(Post $post){
return view ('blog-post', ['post'=>$post]);
}
public function create(){
return view ('admin.posts.create');
}
public function store(){
$inputs = request()->validate([
'title'=>'required|min:8|max:255',
'post_image'=>'file', //mime: jpeg, png
'body'=>'required'
]);
if(request('post_image')){
$inputs['post_image'] = request('post_image')->store('images');
}
auth()->user()->posts()->create($inputs);
return back();
}
}
这是来自 web.php 的路线
Auth::routes();
Route::get('/', [App\Http\Controllers\HomeController::class, 'index'])->name('home');
Route::get('/post/{post}', [App\Http\Controllers\PostController::class, 'show'])->name('post');
Route::middleware('auth')->group(function(){
Route::get('/admin', [App\Http\Controllers\AdminController::class, 'index'])->name('admin.index');
Route::get('/admin/posts', [App\Http\Controllers\PostController::class, 'index'])->name('post.index');
Route::get('/admin/posts/create', [App\Http\Controllers\PostController::class, 'create'])->name('post.create');
Route::post('/admin/posts', [App\Http\Controllers\PostController::class, 'store'])->name('post.store');
});
解决方案
在索引方法中,您需要通过posts
public function index(){
$posts = Post::all();
return view('admin.posts.index',compact('posts'));
}
你没有传入posts variable
刀片文件。因此,它给你undefined error
。
推荐阅读
- c# - API 调用不成功
- python - 尽管尝试了每个 -psm,Pytesseract 都无法识别数字
- javascript - 通过 MQTT 连接 hivemq 代理
- crash - Libreoffice Writer 在编辑文件属性时让计算机崩溃
- gtk3 - 创建可以越过窗口区域的弹出框
- django - 如何使用非 ASCII 字符向管理页面添加操作
- python - 无法安装“blist”以安装 ElastAlert
- java - Maven 项目在 prod 中寻找不存在的路径
- python - 如何将命令行关键字参数传递给scrapyd中的类变量?
- postgresql - Postgres可以实现jsonb LIKE查询吗?