Php 如何修复传递给App\Http\Controllers\Posts\PostsController::show()的参数2必须是App\Post的实例,字符串为

Php 如何修复传递给App\Http\Controllers\Posts\PostsController::show()的参数2必须是App\Post的实例,字符串为,php,laravel,Php,Laravel,我是新来的。你能帮助我吗?我不明白问题出在哪里: 第2项论点已转交立法局 App\Http\Controllers\Posts\PostsController::show()必须是实例 App\Post的名称,给定字符串 后置控制器 public function show( Category $category , Post $post ) { return view('posts.post',[ 'post' => $post,

我是新来的。你能帮助我吗?我不明白问题出在哪里:

第2项论点已转交立法局 App\Http\Controllers\Posts\PostsController::show()必须是实例 App\Post的名称,给定字符串

后置控制器

public function show( Category $category  , Post $post )
{

        return view('posts.post',[

            'post' => $post,

        ]);

}
模型Post.php

class Post extends Model
{


    protected $fillable = ['user_id','category_id','name','slug','body'];
    protected $with = ['user','category'];

    protected static function boot()
    {
        parent::boot(); // TODO: Change the autogenerated stub
        self::creating(function($model){
            $model->slug = str::slug($model->name);
        });
    }

    public function path()
    {
        return "/blog/{$this->category->slug}/{$this->id}";
    }

    public function user ()
    {
        return $this->belongsTo(User::class);

    }//

    public function category ()
    {
        return $this->belongsTo(category::class);

    }
}
Web.php

route::group(['namespace'=>'Posts','prefix' => 'blog'], function (){

    route::get('','PostsController@index')->name('blog');
    route::get('{Category}','PostsController@index');
    route::get('{Category}/{post}','PostsController@show')->name('post');
});
公共功能展示(类别$Category,帖子$Post)

上行表示,
show
函数接收的第一个参数将是
Category
的实例,第二个参数将是
Post

因此,在使用路线时,您需要小心:

route::get('{Category}/{post}','PostsController@show')->name('post');
始终满足这些条件

如果不确定,则只需删除类型转换,以便参数可以是
任何类型,如下所示:

public function show ($category, $post)

更改管线中的参数。将
类别
更改为
类别

Route::get('{category}/{post}','PostsController@show')->name('post');
或者使这两个参数都以大写字母开头

Route::get('{Category}/{Post}','PostsController@show')->name('post');
或者第一个以小写字母开头

Route::get('{category}/{Post}','PostsController@show')->name('post');