如何在Symfony2中构建项目?

ast*_*rix 18 php symfony

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

现在在Symfony2中,一切都是捆绑.对我来说不太清楚的是我怎么能代表"两个"应用程序,前端和后端.我应该创建两个名称空间 - 前端和后端吗?我想将我的实体放在一个地方,而不是从两个应用程序访问它们.

Pro*_*tic 12

只需拥有一个应用程序,为您的项目创建一个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 }
Run Code Online (Sandbox Code Playgroud)

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


mar*_*ark 6

我尝试过PAStheLoD建议的方法(创建app_backend和web_backend等),但我发现它太麻烦了; 你必须记住从控制台定位哪个应用程序,维护单独的引导程序文件,并且目录结构变得混乱.

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

例如

admin_app/
    app/
    bin/
    src/
    web/
frontend_app/
    app/
    bin/
    src/
    web/
common_src/
    Acme/
        AdminBundle/
        DataBundle/
        jQueryBundle/
Run Code Online (Sandbox Code Playgroud)

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

$loader->registerNamespaces(array(
    'Acme' => __DIR__ . '/../../common_src'
));
Run Code Online (Sandbox Code Playgroud)