是否可以获取render()
(Symfony2)方法发送的响应对象?
一个例子:
public function indexAction(){
$params = array('Hi' =>'Hello world', 'userName' =>'Jack');
return $this->render('exampleBundle:Default:index.html.twig', $params);
}
我完全能够在$params
文件中捕获var html.twig
及其内容,但我无法弄清楚如何在javascript中获取该内容以使用angular渲染视图。为了以防万一,我尝试了许多荒谬的事情,但显然它们根本不起作用。
也许根本不可能,我需要重新设计它或者在加载文档后进行新的ajax调用,而不是通过render()
方法传递内容。我不是很确定,我可以在不提出ajax请求的情况下达到此目的吗?
答案 0 :(得分:0)
这种做法在我看来是件坏事。大多数现代客户端应用程序的理念是尽快从服务器加载网页,并通过xhr请求加载数据。
说如果你需要或想要这样做,你可以用不同的方式实现它:
我没有尝试过这些示例,因此可能包含一些语法错误:
1- JS Vanilla方法;在html.twig
<script type="text/javascript">
window.nameSpaceOfMyApp = window.nameSpaceOfMyApp || {};
window.nameSpaceOfMyApp.exchange = window.nameSpaceOfMyApp.exchange || {};
window.nameSpaceOfMyApp.exchange.params = JSON.parse({{$params |json_encode()}});
</script>
2-更多“Angular Way”不会重载全局命名空间并更好地测试...如果此时你有加载angular.js你可以在twig模板中创建角度App的主模块(如果你不能使用你的主模块,您可以使用新模块并将其作为主模块的依赖项)
在html.twig
:
<script type="text/javascript">
angular.module('moduleName',[<dependencies>,...])
.value('exchange',{
params: JSON.parse({{$params |json_encode()}})
})
</script>
稍后您可以在需要的地方注入此值。
angular.module('moduleName').controller('nameOfController',['exchange', function(exchange){
console.log(exchange.params)
}]);