在Symfony APP中集成AngularJS



我在这里:

  • 我用几个捆绑包创建的RESTful Symfony API
  • 我在web存储库中有一个前端AngularJS

下面是我的路由文件示例:

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

事实上,我必须使用"../">。因为否则它将无法在开发环境(app_dev.php)中工作。当然,当我将其发布到生产环境(app.php)时,我不需要添加这个"../">

你们理解我的问题吗?

由于我可以在路由文件中从Symfony获得assetic工作。

我该如何解决这个问题?

有一种方法,您可以在基本的trick文件中定义一个全局变量:Symfony 2:带有assetic的javascript文件中的图像路径,您可以反过来在例如AngularJS中使用。

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

然而,还有另一种选择;-我个人使用了Rein Baarsma发布的方法,并将其用于分支文件,然后缓存生成的javascript

编写一个请求侦听器非常简单,该侦听器每天一次或在删除javascript文件时将trick文件呈现为javascript文件。我对一个每天都在变化颜色的项目的样式表使用了同样的方法。如果你不缓存它,浏览器会重新访问返回每个页面上javascript的路径,并重新发送javascript文件,这会增加很多开销。

您可以简单地制作一个带有js文件视图的Symfony控制器。通过这种方式,您可以使用trick(或php)模板函数(如trick的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: '/'
}); 

最新更新