如何在Symfony2中构建项目?
我想问一下,在Symfony2中构建具有前端和后端的项目的最佳方法是什么?在其他版本的Symfony中,这很容易实现,因为您可以创建两个应用程序 - 前端和后端 - 然后所有库/模型将在这些应用程序之间共享。
现在在Symfony2中,一切都是捆绑包。对我来说不太清楚的是,我如何表示“两个”应用程序,前端和后端。我应该创建两个命名空间 - 前端和后端吗?我希望将我的实体保存在一个位置,而不是从两个应用程序访问它们。
我想问一下,在Symfony2中构建具有前端和后端的项目的最佳方法是什么?在其他版本的Symfony中,这很容易实现,因为您可以创建两个应用程序 - 前端和后端 - 然后所有库/模型将在这些应用程序之间共享。
现在在Symfony2中,一切都是捆绑包。对我来说不太清楚的是,我如何表示“两个”应用程序,前端和后端。我应该创建两个命名空间 - 前端和后端吗?我希望将我的实体保存在一个位置,而不是从两个应用程序访问它们。
只需有一个应用程序,为您的项目创建一个or或任何具有后端所需的所有工具的应用程序,并使用防火墙和访问控制列表为两者创建单独的路由。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 }
如果要对 / 和 /admin 进行完全的身份验证分离,请创建一个新的管理员防火墙:防火墙不会在彼此之间共享身份验证信息,因此您可以根据需要单独跟踪用户及其会话。
我已经尝试了PAStheLoD建议的方法(创建app_backend和web_backend等),但我发现它太麻烦了;您必须记住从控制台定位哪个应用程序,维护单独的引导文件,并且目录结构变得混乱。
Symfony 文档 Symfony 文档推荐的方法是为每个应用创建一个单独的项目。然后,您可以为源代码创建一个单独的区域,在那里编写大部分(如果不是全部)捆绑包,然后只需调整它们在自动加载中.php两个应用程序中的包含方式即可。
例如:
admin_app/
app/
bin/
src/
web/
frontend_app/
app/
bin/
src/
web/
common_src/
Acme/
AdminBundle/
DataBundle/
jQueryBundle/
然后在*_app/app/autoload.php:
$loader->registerNamespaces(array(
'Acme' => __DIR__ . '/../../common_src'
));