在Symfony APP中集成AngularJS

时间:2015-04-17 17:26:50

标签: php angularjs symfony

我在这里:

  • 我使用少量捆绑包创建的RESTful Symfony API
  • 我在网络存储库中的前面AngularJS

现在这是我的路由文件示例:

 $routeProvider.
  when('/liste-produits', {
    templateUrl: '../templates/list-products.html',
    controller: 'ProductListCtrl'
  }).
  otherwise({
    redirectTo: '/'
  }); 

我必须使用“../”这一事实。因为否则它将无法在dev environnement(app_dev.php)中运行。当然,当我将其发布到生产(app.php)时,我将不需要添加此“../”

你们了解我的问题吗?

因为我可以从路由文件中的Symfony工作中获得资产。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

有一种方法,您可以在基本树枝文件中定义全局变量: 您可以依次使用的Symfony 2:image paths in javascript file with assetic AngularJS。

还有一个名为FOSJsRoutingBundle的捆绑包,它会将您的路由暴露给客户端,从而暴露出javascript。这对你来说可能很有趣。

然而还有另一种选择; - 我亲自使用了Rein Baarsma发布的方法和twig文件,然后缓存了生成的javascript

编写一个request listener非常简单,可以将twig文件每天渲染一次javascript文件,或者删除javascript文件。 我对样式表使用了相同的方法,用于每日更换颜色的项目。 如果你不缓存它,浏览器将重新访问在每个页面上返回javascript的路由并重新呈现javascript文件,这会增加很多开销。

答案 1 :(得分:0)

您可以简单地使用js文件中的视图创建Symfony控制器。这样你就可以使用twig(或php)模板函数(比如twig的path()函数)来避免任何奇怪的url。

在您的控制器中:

public function routingAction(Request $request) {
     $this->render('angular/routing.twig.js');
}

在您的路由

$routeProvider.
  when('/liste-produits', {
    templateUrl: {{ path('product_list') }},
    controller: 'ProductListCtrl'
  }).
  otherwise({
    redirectTo: '/'
  });