0

我即将为我的公司创建一个新网站。我希望使用 PHP,因为它是一家小型企业,整个网站最后只有大约 40-50 个页面。为了学习和最佳实践,我希望使用 PHP MVC 框架。我一直在尝试一些,看看当你很好地提供动态内容时它会如何工作。我不明白的是你如何用静态内容纠正 MVC 逻辑。

我的意思是,MVC 模式将如何处理非动态页面,例如公司信息页面。每个页面是否有一个控制器,它只返回一个包含所有 HTML 和 CSS 的视图?控制器是否从其他控制器中提取页眉和页脚信息,然后从不同的视图中提取主要内容?我想我不明白这一切是如何进行的。有人可以 ELI noob 吗?

4

4 回答 4

1

首先,我向你推荐 Yii 框架,它快速稳定,并且对所有函数/方法都有很好的文档。其他框架选项(symfony、cakePhp 等)很慢,学习曲线也很慢。

Yii 使用 controller->actions 管理内容。当你连接到 yourpage.com/site/index 时,yii 会加载一个 SiteController ->actionIndex 并在视图文件中呈现 html 代码。

您将所有网站内容(页眉/页脚/菜单/等)放在页面文件中,视图文件仅加载正文视图。

于 2012-09-12T21:02:59.370 回答
1

每个页面是否有一个控制器,它只返回一个包含所有 HTML 和 CSS 的视图?

在视图和控制器之间建立 1:1 的关系是一种常见的做法。在实现 MVC 时,视图通常代表网站中的一个页面(如 StackOverflow 中的用户配置文件),它会根据模型层状态而改变(想想:您查看您的配置文件或其他人的配置文件)。

一个特定的控制器将负责处理来自该页面的所有(或大部分)用户交互。

在正确实现的 MVC 或受 MVC 启发的设计模式中,控制器只会更改视图的状态(在构造函数中提供给它)。响应的生成(无论是 HTML 页面、HTTP 标头还是 JSON 文件)由视图本身处理。由于控制器不应该创建视图,因此返回它没有意义。

控制器是否从其他控制器中提取页眉和页脚信息,然后从不同的视图中提取主要内容?

如果您使用的是HMVC 模式(实际上与经典 MVC没有直接关系),那将是这种行为。

在适当的 MVC 或受 MVC 启发的结构中,视图将从模型层获取数据,并根据该信息从多个模板组装 HTML 页面。如果你想学习如何用 PHP 制作简单的模板,请阅读这篇文章

我想我不明白这一切是如何进行的。

在这种情况下,您应该首先阅读Martin Fowler“GUI 架构”如果您对整个 OOP 还很陌生,请观看本文底部列出的每一堂课。


主要话题

如果您有大量的静态页面,可以使用 MVC 设计模式来创建站点(您基本上会将它们视为缓存结构,可以查看哪些视图),但这可能有点无意义。

MVC 是一种复杂的设计模式,旨在通过应用SoC为大型应用程序带来秩序。

MVC 不是一种神奇的喷剂,当应用于额头时,它会变得更好。

于 2012-09-12T22:00:11.140 回答
0

MVC 结构并不是静态内容的最佳选择,因为所有的 M、V 和 C 组件都在同一个文档中。因此,没有“正确的方法”来做到这一点。

但是,有一些解决方法。

其中之一是将静态内容转换为模型(M)并将其注入主模板(如果它是推送模板)。另一种是将内容制作成扩展主模板的子模板。

于 2012-09-12T20:56:56.197 回答
0

控制器的工作是填充模型,然后将该模型发送到视图以向用户显示数据。如果数据是静态的而不是动态的,这种责任模式不会改变。控制器只需要较少的“工作”来处理静态内容。

于 2012-09-12T20:57:26.007 回答