为什么要将MVC中的View拆分为视图类和模板

Dom*_*Dom 14 php model-view-controller joomla design-patterns magento

我对设计模式比较陌生,但我觉得我对MVC模式以及这种代码分离带来的优势有了很好的理解.

但是,两次我都看到了MVC模式(Magento和Joomla!),还有一些特殊化,视图由视图类(Magento块)和PHP模板文件组成.如果有人能解释这种分裂的好处,我将不胜感激.

我也不知道如何在视图类和模板文件之间拆分我的代码.有时我发现自己正在编写一个看似冗余的视图类(在Joomla!中),它只是访问模型然后只是为模板提供数据.什么代码应该出现在模板中,哪些代码应该出现在视图类中?

ter*_*ško 6

在MVC风格的设计模式中,View负责所有UI逻辑.他们应该从模型层请求信息,并根据他们收到的信息,选择应该使用哪些模板来创建响应.或者即使需要任何渲染(视图也可以只发送HTTP标头).

你可以说在经典MVC和Model2 MVC模式中,视图只从模型层读取,但控制器只写入它.

如果从模型层收到一些错误状态,则视图将采用主布局模板并对其进行补充,该模板包含错误消息的HTML片段.然后它将整个事物组装成一个用户(在Web应用程序是浏览器的情况下).

基本Web应用程序中的模板只是带有标签和php变量混合的简单文件.

  • 是的,不要相信那个[只有MVC金徽章](http://stackoverflow.com/help/badges/3849/model-view-controller)的人 (7认同)

Sam*_*tch 2

在一般情况下,“视图”和“模板”之间的划分是这样的,如果您要通过不同的方法呈现视图数据[即。HTML、XML、JSON 等] 那么您不需要不断重写“View”类,只需创建新的“Template”类。如果您想将 AJAX 调用合并到前端,或者从其他应用程序(例如智能手机应用程序)进行调用,这非常有用。