Silverstripe v4 MVC 目录?
Silverstripe v4 MVC Directories?
我想知道为什么 SS4 主目录中没有 "Models / Views / Controllers" 个目录?似乎所有东西都应该放在里面 "mysite/code" .. 如何实现 MVC 风格?
MVC 更像是一种 software-architectural 模式,而不是组织文件的方式。 SilverStripe 框架对您应该如何组织代码做出了一些假设:
型号
对于 SilverStripe 4,每个模块的默认代码文件夹名为 src
或 code
。在该文件夹中,您可以随意组织您认为合适的文件。理想情况下,您以 PSR-4 兼容的方式构建文件夹结构,以便您的 folder-names 与您的命名空间相匹配。
控制器
与模型 类 相同,您可以将控制器放在任何您想要的地方。
不过,Page
类 有一个默认假设。这些期望匹配的控制器具有与页面相同的命名空间。因此,如果您的页面命名为:Company\Module\Pages\MyPage
,框架将查找 Company\Module\Pages\MyPageController
。
尽管如此,您可以通过在页面上实施 getControllerName
方法和 return 供控制器使用的 FQCN 来自由覆盖它。
观看次数
也称为 "templates" 应该在 templates
文件夹中。每个模块(您的 mysite
文件夹也是一个模块)可以有一个 templates
文件夹。
除此之外,您还可以有主题。主题通常捆绑模板、css 和其他资产。 themes
文件夹中可以有多个主题文件夹,每个主题文件夹可以有一个templates
文件夹。
我想知道为什么 SS4 主目录中没有 "Models / Views / Controllers" 个目录?似乎所有东西都应该放在里面 "mysite/code" .. 如何实现 MVC 风格?
MVC 更像是一种 software-architectural 模式,而不是组织文件的方式。 SilverStripe 框架对您应该如何组织代码做出了一些假设:
型号
对于 SilverStripe 4,每个模块的默认代码文件夹名为 src
或 code
。在该文件夹中,您可以随意组织您认为合适的文件。理想情况下,您以 PSR-4 兼容的方式构建文件夹结构,以便您的 folder-names 与您的命名空间相匹配。
控制器
与模型 类 相同,您可以将控制器放在任何您想要的地方。
不过,Page
类 有一个默认假设。这些期望匹配的控制器具有与页面相同的命名空间。因此,如果您的页面命名为:Company\Module\Pages\MyPage
,框架将查找 Company\Module\Pages\MyPageController
。
尽管如此,您可以通过在页面上实施 getControllerName
方法和 return 供控制器使用的 FQCN 来自由覆盖它。
观看次数
也称为 "templates" 应该在 templates
文件夹中。每个模块(您的 mysite
文件夹也是一个模块)可以有一个 templates
文件夹。
除此之外,您还可以有主题。主题通常捆绑模板、css 和其他资产。 themes
文件夹中可以有多个主题文件夹,每个主题文件夹可以有一个templates
文件夹。