我正在尝试将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>
任何帮助将不胜感激!提前谢谢!
答案 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);
当然,如果您有许多方案或变量,您可能需要调整该代码。