我在模型中有一个User
课程,需要发送密码提醒电子邮件。
User
并将其(或其中的值)传递给视图中的Email
类?在这种情况下,控制器是否会实际发送电子邮件?User::sendEmail()
,甚至 还没有电子邮件的视图(User
发送电子邮件)?Email
处理发送的另一个模型类,而 it 是否会提供给视图Email
?还是我完全失去了? ; - )
感谢你们给我的任何帮助!
答案 0 :(得分:4)
除非您正在构建消息传递系统,否则电子邮件宁可成为核心域的一部分资源。您可以将它们视为任何其他类型的资源,例如数据库访问,日志记录等。
就个人而言,我将其作为MessagingService进行抽象,以避免过于紧密地与电子邮件耦合 - 这将允许您在将来发送其他渠道的邮件(如果相关)。控制器需要注入MessagingService并发送消息。
涉及用户对象的唯一原因是,如果您需要来自用户的值来填充电子邮件的内容,但这基本上只是数据的转换。
答案 1 :(得分:1)
如果你真的想把事情分解成MVC ......建立Mark Seemann所说的话。
MessageController - >发送消息/电子邮件 MessageModel - >存储消息/电子邮件的信息 不需要查看。
我只是将用户信息直接传递给MessageModel。 MessageModel没有理由直接传递User对象。
答案 2 :(得分:0)
我会说:
控制器做东西
视图显示内容
它应该进入控制器
答案 3 :(得分:0)
正如我所看到的,电子邮件将属于框架的显示层,在MVC概念的情况下是View。毕竟,电子邮件只是请求输出的另一个显示选项。
不应使用模型和控制器来创建或显示输出。这是使用像MVC这样的设计模式的重点。
修改澄清; Controller将使用从模型中收集的数据触发发送'输出',View将根据电子邮件,HTML或其他特定View设计的内容进行编写和发送。