2013-10-30 128 views
0

我第一次尝试使用Symfony2框架构建应用程序。但是有很多东西需要学习,我的大脑对所有的视频/博客文章/技巧/文档都充满了饱和感,所有这些信息让我感到压力。我想以正确的方式开始我的项目,并确保我的架构会很好。我有种“捆绑”的概念。这意味着所有与功能相关的信息。但后来我问自己......什么是功能?我们如何定义一个功能?Symfony2 - 一个包是一个功能......但是什么是功能?

我会从我的项目中拿一个简单的例子。我有一个用户可以注册/登录到他们的帐户。登录是一个功能吗?或者是整个管理界面的功能?

我也有第二个例子。在我的应用程序中,我的用户可以将文件上传到服务器。上传器是否在Bundle中(文件验证,复制文件,调整图像大小)?我知道我的上传器会多次使用(上传徽标,产品图片等),而且我明显希望在完成代码后重新使用我的代码。

回答

2

捆绑包是一组实现一件事的类捆绑包是库和te框架之间的粘合剂。例如,创建博客时,主包将是BlogBu​​ndle。你也是一个评论系统,所以它也有一个评论包。对于菜单,您使用KnpMenu库,并因此使用KnpMenuBundle。为了使页面动态化,您还可以使用SonataBlockBundle和SonataAdminBundle。

这些都是功能。

回答你的情况:所有管理员的东西都是一个包。但是,此管理包不包含用户系统,这是UserBundle的任务(例如FosUserBundle)。

在第二种情况下:您有一个MediaBundle来处理特定文件(您在配置中配置的)的上传。您还有一个用户系统的UserBundle和一些AdminBundle来保持对项目的控制。

+0

有趣的东西,这是否意味着一个页面可以加载多个Bundle? 假设我的AdminBundle Twig根据来自FosUserBundle的USER_ROLE生成一个菜单。然后我的MediaBundle Twig生成我的上传器? –

+1

是的,当然。在一个请求中,使用了很多bundle(如果以正确的方式执行) –