Php 如何在Symfony2中构建项目?

Php 如何在Symfony2中构建项目?,php,symfony,Php,Symfony,我想问一下,在Symfony2中构建前端和后端项目的最佳方式是什么?在Symfony的其他版本中,这很容易实现,因为您可以创建两个应用程序-前端和后端-然后所有库/模型将在这些应用程序之间共享 现在在Symfony2中,一切都是一个捆绑包。对于我来说,真正不清楚的是如何表示“两个”应用程序,前端和后端。我应该创建两个名称空间-前端和后端吗?我希望将实体保存在一个位置,而不是从两个应用程序中访问它们。据我所知,您仍然可以使用Symfony2执行大致相同的操作。只需将app/重命名为app_前端并复

我想问一下,在Symfony2中构建前端和后端项目的最佳方式是什么?在Symfony的其他版本中,这很容易实现,因为您可以创建两个应用程序-前端和后端-然后所有库/模型将在这些应用程序之间共享


现在在Symfony2中,一切都是一个捆绑包。对于我来说,真正不清楚的是如何表示“两个”应用程序,前端和后端。我应该创建两个名称空间-前端和后端吗?我希望将实体保存在一个位置,而不是从两个应用程序中访问它们。

据我所知,您仍然可以使用Symfony2执行大致相同的操作。只需将app/重命名为app_前端并复制到app_后端,也可以用同样的方法复制web/即可。然后其他的东西都可以捆绑住。捆绑包非常强大,因为它们可以包含路由、配置或任何其他内容,因此您可以共享您想要的内容,并完美地隔离您不想共享的内容


由于重命名了目录,bin/脚本可能会出现一些问题,但您只需正确配置它们(或在Symfony的Github网站上提出问题)。

我尝试了PAStheLoD建议的方法(创建应用程序后端和web后端等),但我发现这太麻烦了;您必须记住从控制台指向哪个应用程序,维护单独的引导文件,目录结构就会变得混乱

Symfony文档推荐的方法是为每个应用程序创建一个单独的项目。然后,您可以为源代码创建一个单独的区域,在那里编写大部分(如果不是全部)捆绑包,然后简单地调整它们如何包含在两个应用程序的autoload.php中

e、 g

然后在*u app/app/autoload.php中:

$loader->registerNamespaces(array(
    'Acme' => __DIR__ . '/../../common_src'
));

只要有一个应用程序,为您的项目创建一个
AdminBundle
BackendBundle
或任何在后端拥有您需要的所有工具的应用程序,并使用
security.yml
中的防火墙和访问控制列表为这两个应用程序创建单独的路由

不需要创建单独的应用程序目录、弄乱控制台脚本或诸如此类的东西。默认情况下,Symfony知道如何为您注册的任何捆绑包查找实体和其他资源,因此您可以轻松地共享它们

关于安全性是开始学习访问控制和防火墙的好地方。下面是我的安全配置的快速示例:

firewalls:
    main:
        pattern: /.*
        anonymous: true
        form_login: true

access_control:
    - { path: /admin/.*, roles: ROLE_ADMIN }
    - { path: /.*, roles: IS_AUTHENTICATED_ANONYMOUSLY }

如果您想完全分离/和/管理员的身份验证,请创建一个新的管理员防火墙:防火墙之间不共享身份验证信息,因此您可以根据需要单独跟踪用户及其会话。

使用一个应用程序并创建三个捆绑包,src/Vendor/BackendBundle,src/Vendor/FrontendBundle和src/Vendor/SharedBundle。SharedBundle在Symfony最佳实践提示()中保留前端捆绑包和后端捆绑包之间的实体和其他共享部分,他们建议每个应用程序只有一个捆绑包,因此每个捆绑包都需要自行工作。
firewalls:
    main:
        pattern: /.*
        anonymous: true
        form_login: true

access_control:
    - { path: /admin/.*, roles: ROLE_ADMIN }
    - { path: /.*, roles: IS_AUTHENTICATED_ANONYMOUSLY }