2014-10-29 62 views
0

我是新与Symfony和角度,今天我做了很多,以找到一个解决我的问题,但没有结果......问题Symfony和AngularJS可变

在symfony中,我得到一个参数女巫:

{{app.request.baseUrl}} 

然后在窗体中我使用AngularJs:

<form role="form" action="[[ {{app.request.baseUrl}} + '/stats/' + inputSummoner + '/' + inputRegion]]" method="post"> 
... 
</form> 

这里是我无法读取AngularJS命令的Symfony变量的问题...

this value {{app.request.baseUrl}} is empty when i use it in the AngularJS quotes 

,所以我尝试另一种解决方案,但没有结果:

在我html.twig我把一个隐藏的价值与ID:

<input type="hidden" id="baseUrl" value="{{app.request.baseUrl}}"/> 

在我AngularJS控制器我尝试更新值:

var timer=false; 
$scope.baseUrl=''; 
$scope.$watch('baseUrl', function() { 
    $scope.baseUrl=document.getElementById("uriBase"); 
}); 

这并不工作,所以,如果有人有一个解决方案可能是有帮助的^^

因为我使用JavaScript命令的那一刻:

window.location.href 

不知道,如果它是好还是不好,但它的工作原理..

非常感谢!

最好的问候, CUETO文森特

+0

为什么要使用[和]与{{app.request.baseUrl}}? – griotteau 2014-10-29 07:44:36

+0

插值? – oligan 2014-10-29 08:35:24

+0

你做错了。 混合渲染视图是非常糟糕的实践。 Angular应用程序应该这样做,而不是syfmony。你只能像API后端一样使用symfony – jamek 2014-10-29 12:38:55

回答

0

你的第一种方法不会工作,因为当模板枝杈呈现{{app.request.baseUrl}}才有效。

你的第二个方法有一些错误,控制器应该是这样的:

var timer=false; 
$scope.baseUrl=document.getElementById("baseUrl").value; 

但是,你应该用第三种方法坚持下去。 AngularJS具有基于window.location为您提供方便$location服务:https://docs.angularjs.org/api/ng/service/$location

0

正确的动作应该是这样的:

<form role="form" action="[[ '{{app.request.baseUrl}}' + '/stats/' + inputSummoner + '/' + inputRegion]]" method="post">