【发布时间】:2018-02-24 03:45:36
【问题描述】:
我认为我们有单独的控制器,分别用于我们应用程序的单独逻辑或模块,而且我还发现在另一个控制器中使用控制器不是一个好习惯。
在这里我遇到了困难。
有两个控制器 PagesController 和 PostsController
PagesController 处理所有与页面相关的任务。
class PagesController
{
public function index()
{
// method of our root request, get and show all posts
}
public function contactUs()
{
// show contact us page etc.
}
}
PostsController 处理所有与帖子相关的任务。
class PostsController
{
public function getPosts() {} // get all posts from database
public function deletePost($id) {} // delete a post
public function editPost($id) {} // edit a post
}
现在帖子控制器处理所有帖子特定任务,页面控制器处理所有页面相关任务。问题是我想使用帖子控制器 getPosts() 方法来获取所有帖子并将它们传递给查看。如何在 PagesController 的 index() 方法中使用 PostsController 的 getPosts() 方法。
一种方法是扩展 PostsController 并使用它。但是如果我们也想使用另一个控制器的方法呢?
请为我提供更好的方法。
【问题讨论】:
-
getPosts() 方法属于 Post Model 而不是 Controller。如果您创建一个名为 Post 的模型并在那里创建 getPosts 模型,您可以在两个控制器中使用它。实际上,如果你有 Post 模型,你可以简单地使用
Post::all()来代替
标签: php laravel frameworks