Symfony2使用带有Angular HTML5路由的资产

时间:2013-08-19 17:27:10

标签: symfony angularjs assetic route-provider

我使用Symfony的角度前端。当我声明我的$routeProvider时,我必须包含我的/app_dev.php/因为我将html 5模式设置为true:$locationProvider.html5Mode(true);

$routeProvider.when('/app_dev.php/admin', 
                    {templateUrl: 'index.html', controller:   AdminCtrl})
              .when('/app_dev.php/admin/schedule/', 
                    {templateUrl: 'schedule.html', controller: ScheduleCtrl})
              .otherwise('/app_dev.php/admin');
$locationProvider.html5Mode(true);

VS

$routeProvider.when('/admin', 
                    {templateUrl: 'index.html', controller:   AdminCtrl})
              .when('/admin/schedule/', 
                    {templateUrl: 'schedule.html', controller: ScheduleCtrl})
              .otherwise('/admin');
$locationProvider.html5Mode(true);

问题是我必须记得在我想要使用生产环境时更改这些路线。

当我执行转储以检测我正在为assetic vs dev执行转储时,我可以使用prod处理此问题,或者我只需要痛苦记得改变目标环境的路径吗?

由于

2 个答案:

答案 0 :(得分:6)

尝试使用FOSJsRoutingBundle。此捆绑包允许您在JavaScript代码中公开路由。这意味着您将能够使用给定参数生成URL,就像您可以使用Symfony2核心中提供的路由器组件一样。 https://github.com/FriendsOfSymfony/FOSJsRoutingBundle

答案 1 :(得分:2)

您可以在.htaccess中使用不同的重写规则。然后gitignore文件。因此,在本地主机上,它始终通过app_dev.php和prod通过app.php进行路由。 为了帮助您转储路由,Symfony2有一个命令: http://symfony.com/doc/current/cookbook/configuration/apache_router.html