使用CakePHP设计博客
我正在使用CakePHP构建一个博客(只是一个个人项目,没什么大不了的),现在我有了下一个控制器:使用CakePHP设计博客,php,cakephp,Php,Cakephp,我正在使用CakePHP构建一个博客(只是一个个人项目,没什么大不了的),现在我有了下一个控制器: PostsController(操作:索引、关于、存档、显示、编辑) UsersController(操作:注册、登录、注销) 我认为像“index”、“about”和“archive”这样的操作应该放在不同的控制器(比如BlogsController)中,因为它们不是与单个帖子相关的操作 我一直在互联网上搜索,我发现大多数人在博客和帖子操作中只使用一个控制器(BlogsController或
- PostsController(操作:索引、关于、存档、显示、编辑)
- UsersController(操作:注册、登录、注销)
所以我的问题是:我是否应该为诸如“索引”、“关于”、“存档”等操作设置一个单独的控制器?否,您应该为每个离散实体类型(例如,
Post
,User
,Comment
)保留一个控制器。然后,您可以使用诸如/posts/view/5
之类的操作来查看ID为5
的博客文章。如果要使URL反映博客内容,则可以映射/blog/5
或/blog/posts/5
的路径(请参阅)
如果你计划创建一个不仅仅是博客的网站,你也可以考虑用CAKEPHP创建博客插件(再一次)。然后,所有与博客相关的操作都将被限制在组织的单个插件中。因此,这也使得为其他网站部署博客代码变得更容易 否,您应该为每个离散实体类型保留一个控制器(例如,
Post
,User
,Comment
)。然后,您可以使用诸如/posts/view/5
之类的操作来查看ID为5
的博客文章。如果要使URL反映博客内容,则可以映射/blog/5
或/blog/posts/5
的路径(请参阅)
如果你计划创建一个不仅仅是博客的网站,你也可以考虑用CAKEPHP创建博客插件(再一次)。然后,所有与博客相关的操作都将被限制在组织的单个插件中。因此,这也使得为其他网站部署博客代码变得更容易 因此,我的PostsController可以执行类似于“关于”(关于博客,而不是关于帖子)的操作,即使“关于”不是与帖子相关的操作吗?@enrmarc No。操作应该只处理它们引用的实体。如果您有特定于博客本身的操作,那么这将保证一个没有模型的
BlogController
(例如,public$Model=array();
)。然而,about页面听起来非常静态,因此最好是作为/app/views/pages/
目录中的页面作为about.ctp
文件。然后,如果愿意,您可以为/pages/about
创建到类似/blog/about
的路径。谢谢。是的,我的about页面基本上是静态的,但有一个包含最近文章的侧栏(我使用一个元素来重用该视图:sidebar.ctp)。但是sidebar.ctp需要一个$posts变量来显示最近的帖子。。。所以,我需要一个关于BlogsController中的操作的,对吗?-1:为每个域实体提供单独的控制器意味着表示与模型层紧密耦合。这是一个人能做的最糟糕的事情。@tereško这正是CakePHP鼓励的设计,所以如果你觉得这是你能做的最糟糕的事情,那么就找一个新的框架。我在这里从来没有提到任何关于表示逻辑与控制器耦合的事情。控制器是特定于其模型的,因此它们可以根据需要收集数据,然后使用控制器公开的API构建表示。您的建议将在视图和控制器之间创建更大的耦合,因为您是围绕应用程序视图的结构来构建控制器的。因此,我的PostsController具有类似“关于”(关于博客,而不是关于帖子)的操作可以吗即使“关于”不是一项与帖子相关的行动?@enrmarc否。行动应该只处理他们提到的实体。如果您有特定于博客本身的操作,那么这将保证一个没有模型的BlogController
(例如,public$Model=array();
)。然而,about页面听起来非常静态,因此最好是作为/app/views/pages/
目录中的页面作为about.ctp
文件。然后,如果愿意,您可以为/pages/about
创建到类似/blog/about
的路径。谢谢。是的,我的about页面基本上是静态的,但有一个包含最近文章的侧栏(我使用一个元素来重用该视图:sidebar.ctp)。但是sidebar.ctp需要一个$posts变量来显示最近的帖子。。。所以,我需要一个关于BlogsController中的
操作的,对吗?-1:为每个域实体提供单独的控制器意味着表示与模型层紧密耦合。这是一个人能做的最糟糕的事情。@tereško这正是CakePHP鼓励的设计,所以如果你觉得这是你能做的最糟糕的事情,那么就找一个新的框架。我在这里从来没有提到任何关于表示逻辑与控制器耦合的事情。控制器是特定于其模型的,因此它们可以根据需要收集数据,然后使用控制器公开的API构建表示。您的建议将在视图和控制器之间创建更大的耦合,因为您正在围绕应用程序视图的结构构建控制器。