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 文件通常不被解析。

对于如何解决这个问题,您有一些选择。一种想法是将您的 javascript 代码内联到您的树枝模板中。当然,这不适合大代码块并且不是很干净。

更好的方法是将路径存储在布局树枝模板中的变量中:

<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 回答