我在这里:
- 我用几个捆绑包创建的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: '/'
});