Php 如何在资源路由中使用路由slug

Php 如何在资源路由中使用路由slug,php,laravel,Php,Laravel,这是在laravel中定义阻塞路径的常用方法 Route::get("/category/{category:id}/post/{post:id}","CategoryPostController@show"); 注意,这个路由实际上是绑定post和category之间的关系,属于sto, 因此,当您请求/category/1/post/1并且id=1的帖子实际上属于id=1的类别时,该帖子将被返回 但是,如果您请求/category/1/post/2将

这是在laravel中定义阻塞路径的常用方法

Route::get("/category/{category:id}/post/{post:id}","CategoryPostController@show");
注意,这个路由实际上是绑定post和category之间的关系,属于sto, 因此,当您请求
/category/1/post/1
并且id=1的帖子实际上属于id=1的类别时,该帖子将被返回

但是,如果您请求
/category/1/post/2
将id=2的帖子放在手上,则该帖子不属于id=1的类别,结果将是404找不到

现在,利用资源路线,我实际上无法做这样的事情

比如说,

Route:apiResource("category.post","CategoryPostController");
此方法映射处理category和post资源的路由,其中一个是上面的路由
/category/{category}/post/{post}


但是没有鼻涕虫,因此,我如何在方法内部实现这一点,而不必从头开始硬编码整个路由,从而充分利用资源路由。

PendingResourceRegistration
对象上有一个
范围
方法,该对象从
路由::资源
返回(
apirource
正在调用
resource
):

如果您需要覆盖所使用的路由密钥,您也可以这样做:

...->scoped(['post' => 'slug']);
如果要使用不返回任何内容的
apiResources
resources
,可以向它们传递“options”数组以设置此信息:

Route::apiResources([...], ['bindingFields' => []]);
// should be like adding `scoped` to each of them

scoped

欢迎来到SO…您使用的是什么版本的Laravel?还有什么“slug”,您只使用了“id”这里我使用的是Laravel 7.0,这里是否存在这个问题?谢谢,如果我使用了参考资料,还有一个问题()方法,其中包含一组控制器和前缀,如何应用这些方法?不幸的是,这些方法
resources
apiResources
不返回任何内容,因此您不能…它们只是循环通过您传递给它们的内容并调用适当的方法,如果需要,您可以使用foreach循环自己执行此操作…但是有一个
options
数组,您可以将它传递给所有这些方法,您可以设置它…我将添加到答案中
Route::apiResources([...], ['bindingFields' => []]);
// should be like adding `scoped` to each of them