لديك العديد من المشاكل, بداية في ملف المتحكم وبالتحديد في التابع index سوف نقوم بتغيير اسم المتغير post الى post ,لاحظي السطر التالي
$posts = Post::all();
return view("post.index",compact('posts'));
لاحظي لقد اضفت حرف s للمتغير
المشكلة الثانية أنك قمتي بعمل تعليق على كود الذي يعرض البوستات في ملف index.blade.php, سوف نقوم بتغيير الكود ليصبح كالتالي
<div class="container">
@foreach ($posts as $post)
^^^^^^^
<table>
@can('View', $post)
^^^^^
<tr>
<td>{{$post->body}}</td>
</tr>
@endcan
</table>
{{-- {{$post}} --}}
@endforeach
@can('viewAny')
^^^^^^^^^^^^^^^
KKKKKKKKKKKKKKKKKKKKKKKKKKKKK
@endcan
</div>
@endsection
التغيير الأول لقد قمت بتغيير اسم المتغير من post الى posts وهو الذي مررناه الى صفحة العرض index , التغيير الثاني أن التابع View في ملف البوليسي يقبل معاملين, المعامل الأول هو كائن من نوع user والمعامل الثاني كائن من نوع post , ولذلك في حلقة التكرار سوف نقوم بتمرير ال post الذي نمر عليه
التغيير الثالث , أنه لا يوجد لديك تابع في ملف البوليسي اسمه view-Any بل اسمه viewAny ولا يقبل الا معامل واحد وهو كائن من نوع يوزر وليس post