0

JavaScript関数でリンクジェネレーターを使用しようとしています。

{% for key in values %}
<a href="#" onClick="bookConfirm('{{key}}'); return false;">click!!</a>  
{%endfor %}

function bookConfirm(key) {
    if (confirm("Is it OK?")) {
    alert("OK!!");

    location.href = "{{ path('acme_member_bookLesson',{'scheKey':key})}}";
    } else {
    alert("cancel!");
    }
}

しかし、それは示しています

「19 行目の AcmeMemberBundle:Default:show.html.twig に変数 "key" が存在しません」

どうすればこの問題を解決できますか? Javascript とリンク ジェネレーターを使用するのは少し複雑です。

4

1 に答える 1

2

編集: 2 番目keyはループ内にありません。つまり、常に最後のループの値を持つことになります。の値をkey引数として JavaScript 関数に出力します。2 番目のkey値は、j​​avascript 関数のキー値ではなく、twig のキー値です。それがなぜであり、それを修正する方法は、私の元の回答で読むことができます:

小枝は PHP で書かれたテンプレート エンジンです。つまり、サーバー側で実行され、コード内にテキストが出力されます。次に、コードがブラウザに送信され、ブラウザが HTML、CSS、および JavaScript コードを解析してレンダリング/実行します。

そのため、JavaScript で小枝コードを実行することはできません。

ただし、FosJsRoutingBundleを使用してコードを簡単に修正できます。このバンドルはまさにその通りで、クラ​​イアント側の Symfony ルーティング機能のほとんどを JavaScript で処理できます。

コードは次のようになります。

function bookConfirm(key) {
    if (confirm("Is it OK?")) {
        alert("OK!!");

        location.href = Routing.generate('acme_member_bookLesson', { key: key });
    } else {
        alert("cancel!");
    }
}

詳細については、ドキュメントを参照してください

于 2013-06-21T13:01:23.697 に答える