Php 使用Laravel的CRUD资源概念为类别创建主题

Php 使用Laravel的CRUD资源概念为类别创建主题,php,laravel,crud,Php,Laravel,Crud,我在Route::resource('category','CategoriesController')中有类别 每个类别都有主题, 路由::资源('topic','TopicsController') 每个类别中都有主题 所以我们可以转到特定的类别,例如/category/Games,这里我们有关于游戏的主题,例如topicWoW。此主题位于/topic/WoW下。全部使用方法show 现在我的问题来了 假设用户想要创建新主题,他在/category/Games中,单击指向/topics/cr

我在
Route::resource('category','CategoriesController')中有类别

每个类别都有主题,

路由::资源('topic','TopicsController')

每个类别中都有主题

所以我们可以转到特定的类别,例如
/category/Games
,这里我们有关于游戏的主题,例如topic
WoW
。此主题位于
/topic/WoW
下。全部使用方法
show

现在我的问题来了

假设用户想要创建新主题,他在
/category/Games
中,单击指向
/topics/create
的按钮
newtopic
。。。为了给用户创建新主题的能力,我假设我应该根据CRUD资源方法使用此资源的
create
方法
TopicsController

但是

如果我这样做,就会像
/topic/create

那么,我下一步如何才能知道这个主题应该属于哪一类呢

如果我喜欢
/category/WoW/topic/create
,那么我就可以使用部门名称,我会使用它

但是,正如我认为,根据这个CRUD方法,我应该把它放在我在
create
methodofresource
TopicsController
中所说的位置,但是如果知道用户希望它去哪一个类别呢?我不知道该如何正确处理这种情况

如本文所述,您可以使用点语法在资源路由中指定嵌套模型。在您的情况下,这意味着在
/routes/routes.php
(在Laravel 5.3+中)或
app/Http/routes.php
(在Laravel 5.0-5.2中):

这将需要您为此用途创建一个资源控制器。在命令行中:

php artisan make:controller CategoryTopicController --resource
--resource
自动创建快速入门所需的方法,但您可以手动编写它们(确保它们符合
php artisan route:list
指定的内容)

最终你会走上这些路线:

  • 获取
    /category/{category}/topic
    以及方法
    index()
  • 获取
    /category/{category}/topic/{topic}
    以及方法
    show($id)
  • 发布
    /category/{category}/topic
    以及方法
    存储(请求$Request)
  • /category/{category}/topic/{topic}
    与方法
    update(Request$Request$id)
  • 删除
    /category/{category}/topic/{topic}
    以及方法
    destroy($id)
即使Laravel用<代码> $ID<代码>参数创建了这些方法,也可以把它看作一个字符串(最好是你可以在你的路线中包含的一个蛞蝓,比如<代码> /Woo/主题/CREATE/<代码>或<代码> /类别/ RunWo-6/Stuts/Cuffy< /C> >)。 如果未完成,请不要忘记创建模型:
php-artisan-make:model-Category--table=Category&&php-artisan-make:model-Topic--table=Topic

希望能有帮助

编辑


自2017年5月起,如果您想摆脱额外的路由
edit
create
(这些路由仅用于显示表单,以便对资源进行
存储
更新
),您可以使用
路由::APIROURCE
,而不是
路由::资源
(请参阅来自的信息).

有关您需要将相关数据传递给API的相关数据或实体。例如,如果主题在没有类别的情况下不存在,则在创建主题时,您需要传递类别唯一名称或使类别唯一且易于选择的内容。您可以在表单中提供类别下拉列表,用户将选择他们想要的类别。@PandhiBhaumik这不是一个选项。关于论坛类别、帖子和帖子:)
php artisan make:controller CategoryTopicController --resource