我即将为我的公司创建一个新的网站。我希望使用PHP,因为它是一个小型企业,总站点最后只有大约40-50页。为了学习和最佳实践,我希望使用PHP MVC框架。我一直在尝试一些,看看当你非常好地提供动态内容时它会如何运作。我不理解的是你如何用静态内容纠正MVC逻辑。
我的意思是,MVC模式如何处理非动态的页面,例如公司信息页面。每个页面都有一个控制器,它只返回一个包含所有HTML和CSS的视图吗?控制器是否从其他控制器中提取页眉和页脚信息,然后从不同的视图中提取主要内容?我想我不明白这一切是如何运作的。有人ELI noob吗?
答案 0 :(得分:1)
首先,我建议你使用Yii Framework,它的fasts稳定并且有一个很好的所有函数/方法的文档。其他框架选项(symfony,cakePhp等)很慢,学习曲线很慢。
Yii使用controller->操作管理内容。当你连接到yourpage.com/site/index时,加载一个SiteController - > actionIndex并在视图文件中呈现html代码。
您将所有网站内容(页眉/页脚/菜单/等)放在页面文件中,并且视图文件仅加载正文视图。
答案 1 :(得分:1)
每个页面都有一个控制器,它只返回一个包含所有HTML和CSS的视图吗?
通常的做法是在视图和控制器之间建立1:1的关系。在实现MVC时,视图通常表示网站中的页面(如StackOverflow中的用户配置文件),并且它会根据模型层状态而改变(想想:您正在查看您的个人资料或其他人)。
特定的控制器将负责处理该页面的所有(或大部分)用户交互。
在正确实现的MVC或MVC启发的设计模式中,控制器只会改变视图状态(在构造函数中提供给它)。响应的生成(无论是HTML页面,HTTP标头还是JSON文件)都是由视图本身处理的。由于控制器不应该创建视图,因此返回它没有意义。
控制器是否从其他控制器中提取页眉和页脚信息,然后从其他视图中提取主要内容?
如果您使用HMVC pattern(实际上与classical MVC没有直接关系),那就是行为。
在适当的MVC或MVC启发的结构中,视图将从模型层获取数据,并根据该信息从多个模板组装HTML页面。如果您想学习如何在PHP中创建简单模板,请阅读this article。
我想我不明白这一切是如何运作的。
在这种情况下,您应该首先阅读 Martin Fowler 的"GUI Architectures"。如果您还是整个OOP的新手,请观看this post底部列出的每个讲座。
如果您有大量静态页面,可以使用MVC设计模式来创建站点(您基本上将它们视为缓存结构,视图可以使用),但它可能有点无意义。
MVC是一种复杂的设计模式,旨在通过应用SoC为大型应用程序带来顺序。
MVC不是一种神奇的洒水,当applied to the forehead时,它会变得更好。
答案 2 :(得分:0)
MVC结构并不是静态内容的最佳选择,因为所有M,V和C组件都在同一文档中。因此,没有“正确的方法”来做到这一点。
但是,有一些解决方法。
其中之一是将静态内容转换为模型(M)并将其注入主模板(在它是推送模板的情况下)。 另一种方法是将内容转换为扩展主模板的子模板。
答案 3 :(得分:0)
控制器作业是填充模型,然后将该模型发送到视图以向用户显示数据。如果数据是静态的而不是动态的,那么这种责任模式不会改变。控制器与静态内容的关联性较小。