2013-05-22 59 views
0

我正在尝试为JavaScript使用Jeditable插件。下面是代码(我把它从here):如何将Symfony2路径设置为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> 

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

+0

这个源代码是在一个js文件里还是在你的树枝模板里? – Sgoettschkes

+0

带有js代码的第一个文件在单独的文件中,另一个在模板中,但如果带有js的部分工作正常,则它将是多余的。我更新了我的问题。 – Faery

回答

1

表达式{{ path() }}是一个分支表达式,所以它必须由分枝模板分析器进行分析。 JavaScript文件通常不会被解析。

对于如何解决这个问题,您有一些选择。一个想法是将您的JavaScript代码嵌入您的树枝模板中。当然,这不适合大码块,也不太干净。

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

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

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

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

当然,你可能如果你有很多路径或变量,需要对代码进行微调。

+0

非常感谢! – Faery