-1

您好我正在尝试创建自己的 laravel 包它有两个控制器资源,它们有单个控制器和模型Post

    Route::resource('posts', \vendor\package\Controllers\PostsController::class);
    Route::resource('categories', \vendor\package\Controllers\PostsController::class);

我的方法PostsControllershow(Post $post)

如果我打开链接http://localhost/posts/1,方法中的 attributes 元素$post不为空show

但是当我打开链接http://localhost/categories/1时,属性元素$post为空。

如何获取 Post 数据resource categories

帖子和类别之间的 PS 差异是post_type数据库中列的值。

4

2 回答 2

1

您可以定义在使用资源路由时为生成的路由命名的路由参数。

这应该是您需要进行的唯一更改:

Route::resource(
    'categories', 
    \vendor\package\Controllers\PostsController::class,
    ['parameters' => ['categories' => 'post']]
);

现在路由参数是post

GET categories/{post}
GET categories/{post}/edit
...

Laravel 5.6 文档 - 控制器 - 命名资源路由参数

于 2018-07-25T10:23:06.563 回答
0

添加Route::model('categories', App\Post::class);boot()您的方法中

./app/Providers/RouteServiceProvider.php

资源

于 2018-07-25T08:10:17.143 回答