php – Symfony2文件夹结构,优先级和顺序

我来自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.我已经阅读了一些文档并阅读了一两个教程,其中没有一个回答我一直在问自己的这个问题.

根据我的理解,捆绑包是我可以在当前项目中使用的Web应用程序的一部分以及我制作的其他项目.它们作为一个整体填充了某个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

将视图保存在捆绑包或“全局”应用程序文件夹中是否明智?我还注意到在捆绑包内部进行了配置(我怀疑它的层次结构比应用程序’全局’的更高).例如,捆绑AppBundle没有自己的视图和配置,这让我想知道首先在bundle中创建视图是否聪明.

如果我能得到一个简单的答案,或者至少有一个关于它的资源可以解释所有这一切背后的原因,我会非常感激.

解决方法:

总的来说,Bundle中的任何内容都可以被“全局”应用程序设置和资源覆盖.理解这一点的最有用的资源可能是食谱条目How to Override any Part of a BundleHow to Use Bundle Inheritance to Override Parts of a Bundle.

要回答关于是否在bundle或global文件夹中保留视图的问题 – 这一切都取决于视图是否在bundle本身内有意义.如果要在多个包中使用某些内容(例如布局基本模板),那么在app文件夹中更有意义.

在你的捆绑结构方面 – 自从我开始使用Symfony以来,这已经发生了变化,所以我不是这方面的权威.现在的趋势似乎是,如果您可以将功能拆分为自包含的捆绑包,请执行此操作,否则将在认情况下由Symfony安装程序创建的AppBundle中将其弹出.您可能需要查看Best Practices for Reusable Bundles获取更多信息.

完全可能具有多个应用程序包,其中诸如实体和资源之类的东西存储在包之外,例如,

src/Company
    Bundle/
        ManagerBundle/
        FrontendBundle/
    Entity/
    Event/

无论你这样做完全取决于你 – 你的代码,你的组织,除了一些特定的实例,Symfony作为一个框架不会抱怨这一点.

至于捆绑配置在“层次结构”中比全局更高 – 通常没有,但这与DI组件相关联.让你的头脑发挥很多,但Cookbook“配置”部分是一个很好的起点.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...