Laravel初学者在这里。所以你可以猜测我正在创建一个博客,用户可以在一个类别下创建一篇文章并使用不同的标签。
我已经为文章定义了很多路线。
public/article/{id}/show
public/article/{id}/delete
public/article/create
因此,如果我定义了CategoriesController和TagsController,我将不得不在其中定义所有这些CRUD方法,并将路由定义为:
public/categories
public/categories/{id}/delete
public/categories/create
public/tags
public/tags/create
public/tags/delete
我应该继续前进并以这种方式构建它还是有更好的方法来实现这一目标?
答案 0 :(得分:0)
如果您正在谈论管理系统,则需要CRUD来维护您的代码表。
在控制标记的策划系统中,添加标记的过程涉及查找现有标记,可能是异步的。假设你有一个关系数据库,你可以在幕后使用id。
当人们在UI的标记部分中键入一些字符时,系统会异步查找匹配的标记并显示它。一旦发生这种情况,就没有理由不使用标签ID,在这种情况下,拥有一整套标签路线是有用的,但除非你有标签标签,否则不是必需的。例如,即使您想使用关系键来存储关系,您可能只需要一个搜索函数,它接受一个标记字符串,搜索匹配的标记,然后返回匹配的数据。
在某些系统中,提供的任何标签都是动态添加的,但即使在这些情况下,它们通常至少也符合要求。例如,您可能想要消除坏词,混合大小写,标点符号等。
简而言之,如果您需要维护标记表,那么您将需要CRUD标记。如果没有,那么添加标签只是在创建文章时作为POST的一部分进行操作的数据集的一部分。
另外,从逻辑上讲,你不应该有/ public / article / {id} / create的路线。它应该只是/ public / article / create
答案 1 :(得分:0)
这里有一些寻找的好方向
使用RESTful资源控制器,因此您不必单独定义每个CRUD操作。这将使您的路线和控制器整洁干净。加上RESTful它推荐的好方法。
另一种方式是模式。使用良好的模式来设计结构和行为。这里有一些很好的读物。看看
https://www.ibm.com/developerworks/library/os-php-designptrns/
http://shawnmc.cool/the-repository-pattern
https://sourcemaking.com/design_patterns
一种不错的常用方法是使用存储库模式。在存储库模式中,存储库在模型和控制器之间工作。
"存储库通常指存储位置,通常用于安全或 。保存" - 维基百科
这将使您的控制器和模型简单而干净。