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
,这里我们有关于游戏的主题,例如topicWoW
。此主题位于/topic/WoW
下。全部使用方法show
现在我的问题来了
假设用户想要创建新主题,他在/category/Games
中,单击指向/topics/create
的按钮newtopic
。。。为了给用户创建新主题的能力,我假设我应该根据CRUD资源方法使用此资源的create
方法TopicsController
但是
如果我这样做,就会像/topic/create
那么,我下一步如何才能知道这个主题应该属于哪一类呢
如果我喜欢/category/WoW/topic/create
,那么我就可以使用部门名称,我会使用它
但是,正如我认为,根据这个CRUD方法,我应该把它放在我在create
methodofresourceTopicsController
中所说的位置,但是如果知道用户希望它去哪一个类别呢?我不知道该如何正确处理这种情况如本文所述,您可以使用点语法在资源路由中指定嵌套模型。在您的情况下,这意味着在/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