您好,我正在尝试创建自己的laravel包,它具有两个Controller资源,它们具有单个控制器和模型Post
Route::resource('posts', \vendor\package\Controllers\PostsController::class);
Route::resource('categories', \vendor\package\Controllers\PostsController::class);
我在PostsController
中的方法是show(Post $post)
如果我打开链接http://localhost/posts/1,则$post
方法中show
的attribute元素不为空。
但是当我打开链接http://localhost/categories/1时,$post
的attribute元素为空。
如何获取resource
categories
的发布数据?
P.S。职位和类别之间的差异是数据库中post_type
列的值。
答案 0 :(得分:1)
您可以定义使用资源路由时将为生成的路由命名的route参数。
这应该是您需要进行的唯一更改:
Route::resource(
'categories',
\vendor\package\Controllers\PostsController::class,
['parameters' => ['categories' => 'post']]
);
现在路由参数为post
:
GET categories/{post}
GET categories/{post}/edit
...
Laravel 5.6 Docs - Controllers - Naming Resource Route Parameters
答案 1 :(得分:0)
在您的
的Route::model('categories', App\Post::class);
方法中添加boot()
./app/Providers/RouteServiceProvider.php