2016-05-24 8 views
0

render()(Symfony2)メソッドから送信されるレスポンスオブジェクトを取得することはできますか?symfony 2のrender()メソッドによって送信されたAngularレスポンスオブジェクトでキャプチャ

例:

public function indexAction(){ 

     $params = array('Hi' =>'Hello world', 'userName' =>'Jack'); 

     return $this->render('exampleBundle:Default:index.html.twig', $params); 
    } 

私はVAR $paramshtml.twigファイルにその内容をキャプチャすることは全くできんだけど、私はレンダリングするためにJavaScriptでそのコンテンツにそれを取得する方法を見つけ出すことはできません角度を使用して表示します。ただの場合、私は多くのばかげたことを試みましたが、明らかにまったく動かなかったのです。

render()メソッドを使用してコンテンツを渡す代わりに、ドキュメントを読み込んだ後に再設計したり、新しいAjaxコールを作成したりする必要があるかもしれません。私は本当にそうではありません、私はこれをアヤックスのリクエストをせずに到達することはできますか?

答えて

0

このアプローチは私にとっては悪いことです。現代のクライアントアプリケーションの哲学の大部分は、サーバからのウェブページとxhrリクエストによる負荷データをできるだけ早くロードすることです。

はあなたが必要とするか、それを実行したい場合、あなたは貴様のやり方でそれを達成することができることを言った:

私は例を試していなかったので、この缶は、いくつかの構文エラーが含まれています

の1- JSバニラアプローチ。あなた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 - もっと「アンギュラウェイ」でグローバルな名前空間とより良いテストをオーバーロードされない...あなたは小枝テンプレートであなたの角度のAppのメインモジュールを作成することができ、この時点でロードangular.jsを持っている場合(あなたのメインモジュールを使用するカント場合は、新しいモジュールを使用して、メインモジュールの依存関係として、それを必要とすることができます) あなた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) 
}]); 
+0

「app.value(...)」が実行されると、コントローラにどのように注入できますか? – Drumnbass

+0

私は自分の答えを編集しました。最後のコードブロックはコントローラーにそのコードを挿入する方法です。https://docs.angularjs.org/guide/providersで値の詳細を見ることができます。 – jmoreno

関連する問題