0

我想知道是否有任何关于在任何基于 Web 的框架中制作控制器数量的指南。我知道这取决于要求。但是,如果您仍然考虑一个包含注册、登录、用户身份验证、发送电子邮件、用户配置文件编辑等的基本应用程序。您如何决定控制器?

如果有很多通用功能,你会制作一个不同的控制器来容纳它们吗?Zend 等一些框架建议为此创建帮助文件!您是否为不同的功能创建帮助文件类别?

4

1 回答 1

1

查看路由,我们对 Zend 框架中将有多少控制器甚至操作有某种指导。尽管我们必须记住,我们可以做很多事情以一种方式(变得更少)或另一种方式(拥有更多)来改变这一点。

ZF 中路由的基本和一般规则是有一个与控制器和动作匹配的链接路径。

www.yourdomain.com/controller/action

路由将分派到相应的控制器,并与它一起到指定的操作。当我们遵循这个基本规则时,我们最终会得到一些与我们希望看到的路径数量相匹配的控制器。

您基本上可以为您的网站的每一项功能创建一个根路径,并最终获得尽可能多的控制器(通过一个操作),或者甚至将所有内容组合在一个路径中,因此一个控制器,但有尽可能多的操作。

最终,您将并且应该将您网站的通用功能组合到一个路径和控制器中,例如将与用户管理(注册、配置文件编辑)相关的所有内容组合到一个/user路径和 UserController 中。

至于您的示例,我认为用户身份验证不会有自己的控制器,而是发生在登录控制器或该控制器使用的模型中。

更新

控制器及其操作解释请求并且应该只委托给其他方法。将这些方法保留在它们自己的类中可能是有益的。如何构建这些方法和类取决于您。Zend 方法是将它们保存在您自己的应用程序库中,例如,发送电子邮件应该由您自己的应用程序库中的一个单独的类来保存和执行(在 Zend 类旁边并且可能是对其进行扩展)。

如果你有一个联系页面,你可以有一个/contact与 ContactController 的链接。indexAction 将委托所有内容来呈现表单页面。表单可能有一个/contact/submit提交按钮的链接,相应的 submitAction 将连接您的电子邮件库类并发送电子邮件。submitAction 最终可能会调用类似_redirect('/submit/thankyou')or的东西/submit/error。正如您现在可能猜到的那样,将会有一个thankyouAction 负责呈现一个感谢页面或一个errorAction 来让用户知道有一个错误。

于 2013-03-04T20:49:26.737 回答