Laravel 5.6。路线模型

时间:2018-07-25 08:07:30

标签: php laravel laravel-5 laravel-routing laravel-resource

您好,我正在尝试创建自己的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列的值。

2 个答案:

答案 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

source