0

javascript 用の Jeditable プラグインを使用しようとしています。コードは次のとおりです(ここから取得しました):

.js ファイルの場合:

 $('.edit').editable(function (value, settings) {
        var data = {};
        data[this.id] = value;
        data["_token"] = "{{form._token.vars.value}}";
        $.post("{{ path('edit_category', { 'id': cat.id}) }}", data);
        return(value);
        }, {
            indicator:'Saving...',
            tooltip:'Click to edit',
            cancel:'Cancel',
            submit:'Save'
        });

これは機能していません。

No route found for "POST /{{ path('edit_category', { 'id': cat.id}) }}"

id パラメーターをパス ( ) に渡す方法がわからないため、これは理解できますcat.id

これは、テンプレート ファイルで Symfony のみを使用して編集を行う方法です。

<a href="{{ path('edit_category', { 'id': cat.id}) }}">
    <i class="icon-pencil right-spacer"></i>
</a>

どんな助けでも大歓迎です!前もって感謝します!

4

1 に答える 1

1

{{ path() }}は twig 式であるため、twig テンプレート パーサーによって解析する必要があります。通常、Javascript ファイルは解析されません。

これを回避する方法については、いくつかのオプションがあります。1 つのアイデアは、JavaScript コードを twig テンプレートにインライン化することです。もちろん、これは大きなコード ブロックには適しておらず、クリーンでもありません。

より良いアプローチは、レイアウト twig テンプレートの変数にパスを保存することです。

<script>
    var token = "{{form._token.vars.value}}";
    var path = "{{ path('edit_category', { 'id': cat.id}) }}";
</script>

js ファイルでは、変数のみを使用します。

data["_token"] = token;
$.post(path, data);

もちろん、多くのパスや変数がある場合は、そのコードを微調整する必要があるかもしれません。

于 2013-05-22T08:35:14.240 に答える