Symfony2 文件夹结构、优先级和顺序
Symfony2 folder structure, priorities and order
我来自 ASP.NET MVC 世界,我的文件夹结构将是:
+ProjectName
-App_Data (databases, xml's and such data)
-App_Start (function bundles, routes, etc.)
-Controllers
-SampleController.cs
-Models (though I'd usually call models from other projects)
-Views
-Sample
-index.cshtml
-Scripts
web.config
etc.
我正在尝试进入 PHP Symfony2,现在。我已经阅读了一些文档并阅读了一两个教程,none 其中回答了我一直问自己的这个问题。
根据我的理解,捆绑包是我可以在当前项目以及我制作的其他项目中使用的 Web 应用程序的一部分。它们作为一个整体,完成了某种网络应用功能。
我使用命令生成了一个包:
$ php app/console generate:bundle --namespace=Sample/FooBundle --format=yml
我有一些文件夹和子文件夹等等,还有一个资源文件夹,这让我很困惑。
那么 Web 应用程序首先读取什么?控制器如何搜索需要的视图?是否先去
src/Sample/FooBundle/Resources/views/Default/index.html.twig
还是去
app/Resources/views/default/index.html.twig
将视图保存在捆绑包中或 'global' 应用程序文件夹中是否明智?我还注意到配置是在包内进行的(我怀疑它的层次结构比应用程序 'global' 更高)。例如,bundle AppBundle
没有自己的视图和配置,这让我怀疑首先在 bundle 中创建视图是否明智。
如果我能得到一个简单的答案,或者至少是一个可以解释这一切背后原因的资源,我会非常感激不尽。
总的来说,Bundle 中的任何内容都可以被 "global" 应用程序设置和资源覆盖。可能对理解这一点最有用的资源是食谱条目 How to Override any Part of a Bundle and How to Use Bundle Inheritance to Override Parts of a Bundle。
要回答您是将视图保留在包中还是全局文件夹中的问题 - 这完全取决于视图在包本身中是否有意义。如果要在多个包中使用某些东西(例如布局基础模板),那么在 app
文件夹中更有意义。
就您的捆绑结构而言——自从我开始使用 Symfony 以来,这已经发生了变化,所以我不是这方面的权威。现在的趋势似乎是,如果你可以将功能拆分成一个独立的包,那么就这样做,否则将它弹出到 Symfony 安装程序默认创建的 AppBundle
中。您可能想查看 Best Practices for Reusable Bundles 以获取更多信息。
完全有可能拥有多个应用程序包,其中实体和资源等存储在包外,例如
src/Company
Bundle/
ManagerBundle/
FrontendBundle/
Entity/
Event/
你是否这样做完全取决于你 - 你的代码,你的组织,除了一些特定的实例,Symfony 作为一个框架不会抱怨这个。
至于 "hierarchy" 中的捆绑包配置高于全局 - 通常不会,尽管这与 DI 组件相关。很多事情都需要你动脑筋,但 Cookbook "Configuration" 部分是一个很好的起点。
我来自 ASP.NET MVC 世界,我的文件夹结构将是:
+ProjectName
-App_Data (databases, xml's and such data)
-App_Start (function bundles, routes, etc.)
-Controllers
-SampleController.cs
-Models (though I'd usually call models from other projects)
-Views
-Sample
-index.cshtml
-Scripts
web.config
etc.
我正在尝试进入 PHP Symfony2,现在。我已经阅读了一些文档并阅读了一两个教程,none 其中回答了我一直问自己的这个问题。
根据我的理解,捆绑包是我可以在当前项目以及我制作的其他项目中使用的 Web 应用程序的一部分。它们作为一个整体,完成了某种网络应用功能。
我使用命令生成了一个包:
$ php app/console generate:bundle --namespace=Sample/FooBundle --format=yml
我有一些文件夹和子文件夹等等,还有一个资源文件夹,这让我很困惑。
那么 Web 应用程序首先读取什么?控制器如何搜索需要的视图?是否先去
src/Sample/FooBundle/Resources/views/Default/index.html.twig
还是去
app/Resources/views/default/index.html.twig
将视图保存在捆绑包中或 'global' 应用程序文件夹中是否明智?我还注意到配置是在包内进行的(我怀疑它的层次结构比应用程序 'global' 更高)。例如,bundle AppBundle
没有自己的视图和配置,这让我怀疑首先在 bundle 中创建视图是否明智。
如果我能得到一个简单的答案,或者至少是一个可以解释这一切背后原因的资源,我会非常感激不尽。
总的来说,Bundle 中的任何内容都可以被 "global" 应用程序设置和资源覆盖。可能对理解这一点最有用的资源是食谱条目 How to Override any Part of a Bundle and How to Use Bundle Inheritance to Override Parts of a Bundle。
要回答您是将视图保留在包中还是全局文件夹中的问题 - 这完全取决于视图在包本身中是否有意义。如果要在多个包中使用某些东西(例如布局基础模板),那么在 app
文件夹中更有意义。
就您的捆绑结构而言——自从我开始使用 Symfony 以来,这已经发生了变化,所以我不是这方面的权威。现在的趋势似乎是,如果你可以将功能拆分成一个独立的包,那么就这样做,否则将它弹出到 Symfony 安装程序默认创建的 AppBundle
中。您可能想查看 Best Practices for Reusable Bundles 以获取更多信息。
完全有可能拥有多个应用程序包,其中实体和资源等存储在包外,例如
src/Company
Bundle/
ManagerBundle/
FrontendBundle/
Entity/
Event/
你是否这样做完全取决于你 - 你的代码,你的组织,除了一些特定的实例,Symfony 作为一个框架不会抱怨这个。
至于 "hierarchy" 中的捆绑包配置高于全局 - 通常不会,尽管这与 DI 组件相关。很多事情都需要你动脑筋,但 Cookbook "Configuration" 部分是一个很好的起点。