37

かなり奇妙な問題です。質問して申し訳ありません。私は Symfony/Twig の初心者です。私のルートには必須のパラメータが必要region_idです:

ajax_provinces_by_region:
  pattern: /ajax/region/{region_id}/provinces
  defaults: {_controller: SWAItaliaInCifreBundle:Ajax:provincesByRegion }
  requirements: {region_in: \d+}

問題selectは、javascriptの要素 (以下のコード) に基づいてこのルートを生成するにはどうすればよいかということです。

問題は、Symfony のヘルパーを使用できないことです。パラメータを指定する必要があるためpath( ) 、javascript変数であるためアクセスできません (そして、Twig はサーバー側でコンパイルされます)。urlregion_idthis.value

$(document).ready(function() {
    $('select#regions').change(function(){

        // Make an ajax call to get all region provinces
        $.ajax({
            url: // Generate the route using Twig helper
        });

    });
});
4

5 に答える 5

78

古い質問だと思いますが、FOSJsRoutingBundle のようなバンドルをインストールしたくない場合に備えて、ちょっとしたハックがあります。

var url = '{{ path("yourroute", {'region_id': 'region_id'}) }}'; 
url = url.replace("region_id", this.value);

「region_id」はプレースホルダーとして使用されるだけで、JS で実際の変数 this.value に置き換えます。

于 2013-05-01T18:09:55.943 に答える
45

FOSJsRoutingBundleを使用できます。

于 2011-10-02T14:37:29.777 に答える
4
url:  "{{ path('SampleBundle_route',{'parameter':controller_value}) }}"

は、 routing.ymlSampleBundle_routeまたは annotatins で定義された有効なパスです。

テストのために、twig テンプレートに次のように記述します。

<script>
    var url= "{{ path('SampleBundle_route') }}";
    alert(url);
</script>
于 2012-07-05T11:11:12.290 に答える