Ошибка с Route::resource() в Laravel?

https://flareapp.io/share/VmewJA7Q#F40 тут ошибка и все исходники

Происходит ошибка

Missing required parameters for [Route: post.show] [URI: post/{post}]. (View: E:\ospanel\OSPanel\domains\akademka\resources\views\posts\index.blade.php)

когда поменял маршруты с

Route::get('post/', 'PostController@index')->name('post.index');
Route::get('post/show/{id}', 'PostController@show')->name('post.show');
Route::get('post/create', 'PostController@create')->name('post.create');
Route::get('post/edit/{id}', 'PostController@edit')->name('post.edit');
Route::post('post/', 'PostController@store')->name('post.store');
Route::patch('post/show/{id}', 'PostController@update')->name('post.update');
Route::delete('post/{id}', 'PostController@destroy')->name('post.destroy');

на

Route::resource('/post', 'PostController');

В контроллере все методы родные

Вот index.blade.php

    @extends('layouts.layout')

@section('content')
  @if(isset($_GET['search']))
    @if( count($posts)>0)
      <h2>Результат поиска:</h2>
      <p class="lead">Всего найдено {{ count($posts) }} постов</p>
    @else
      <h2>По запросу <?php echo $_GET['search']?> ничего не найдено</h2>
      <a class="btn btn-outline-primary" href="{{ route('post.index') }}"> Все посты </a>
    @endif
  @endif

  <div class="row">
    @foreach($posts as $post)
    <div class="col-6">
      <div class="card">
        <div class="card-header"><h2>{{ $post->short_title }}</h2></div>
        <div class="card-body">
          <div class="card-img " style="background-image: url({{$post->img ?? asset('img/who.jpg')}})"></div>
          <div class="card-author">Автор: {{$post->name}}</div>
          <a href="{{route('post.show', ['id'=> $post->post_id])}}" class="btn btn-outline-primary">Посмотреть пост</a>
        </div>
      </div>
    </div>
    @endforeach
  </div>

  @if(!isset($_GET['search']))
  {{ $posts->links() }}
  @endif

@endsection

Ответы (1 шт):

Автор решения: Vladimir Gonchar

Научитесь читать ошибки. Вам ясно дают понять, что не хватает переменной post в ссылке. Missing required parameters for [Route: post.show] [URI: post/{post}].

Вы же передаёте id вместо post:

<a href="{{route('post.show', ['id'=> $post->post_id])}}" class="btn btn-outline-primary">Посмотреть пост</a>

Поменяйте на post, и проблема исчезнет:

<a href="{{route('post.show', ['post'=> $post->post_id])}}" class="btn btn-outline-primary">Посмотреть пост</a>

Аналогичная ситуация и с остальными путями.


Также возможно изменить название переменной в маршруте вот так (документация):

Route::resource('post', 'PostController',  ['parameters' => [
    'post' => 'id'
]]);
→ Ссылка