如何组织routes.yml中的路由?

时间:2014-01-12 02:33:58

标签: symfony

我开始将遗留应用程序转换为symfony,我的第一次使用php框架体验是zend,学习zend 1. *到了我感到舒服的地方,花了我一年多的时间,现在我挑战自己去学习symfony因为我发现zend 2. *过于复杂。

使用zend我习惯于只创建一个控制器类和用于创建页面的视图。使用symfony,我必须创建路由条目,然后是控制器类,最后是视图。

我的routes.yml超过100行,包含所有要求,方法和诸如此类的东西,而我大约是该项目的三分之一。

如何保持此文件的整理程度?现在它看起来非常混乱。

1 个答案:

答案 0 :(得分:1)

您的网站应拆分为代表其所关注网站部分的捆绑包(来自我目前正在处理的网站)

AddressingBundle
ChartBundle
ContactBundle
CoreBundle        // A bundle that contains all merging items (model, types, etc)
CustomerBundle
PaymentBundle
PolicyBundle
.. etc ...

注意:我使用YAML进行路由。注释可用,不需要额外的文件,但(可能)意味着缺乏路由的可重用性

在每个捆绑包中都有一组可以包含或不包含的路由文件。每个捆绑包都有一个位于Resources/config/routing.yml的路由文件,该文件链接到Resources/config/routing/中的一组文件。

然后,对于主app/config/routing.yml文件,我可以根据需要链接到外部(Resources/config/routing.yml)或内部(Resources/config/routing/something.yml)。此外,它还允许您使用不同的路径多次使用相同的路由,具体取决于前缀。

更新 的: 捆绑的想法是分开关注点。所以对我来说,我(我从Sylius的组成中大量被盗)CustomerBundle只有一个实体(Customer),然后我有一个AddressingBundle和一个实体(Address)。这些可以单独工作,但使用CoreBundle中的数据附加。这样,如果我需要编辑Customer部分,我只需编辑CustomerBundle并确保它以相同的方式进行交互。从技术上讲,没有公共和私有捆绑(由于它们都在根目录下),只有通过路由和安全性公开的路由。