如何将Symfony2路径设置为Jeditable插件

时间:2013-05-22 07:13:08

标签: symfony jeditable

我正在尝试将jeditable插件用于javascript。这是代码(我从here获取):

在.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>

任何帮助将不胜感激!提前谢谢!

1 个答案:

答案 0 :(得分:1)

表达式{{ path() }}是一个twig表达式,因此必须由twig模板解析器解析。通常不会解析Javascript文件。

您可以选择如何解决此问题。一个想法是将您的JavaScript代码内嵌到您的twig模板中。当然,这不适合大代码块而且不是很干净。

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

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

在你的js文件中,你只使用变量:

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

当然,如果您有许多方案或变量,您可能需要调整该代码。