2014-10-29 61 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">