我需要生成url才能在html元素中加载一些内容。
$('#editSchool').click(function () {
var id = $(this).attr('data-id');
当我尝试为id参数
插入id值时,问题从此处开始
$('#educationDialog').load("{{ path('_education_edit', {'id': id}) }}", function () {
$('.closeDialog, #person_education_form_cancel').click(function () {
$('#addSchool').trigger('click');
});
});
});
如果有可能,你有解决方案吗?
答案 0 :(得分:1)
你可以使用FOSJSRouting捆绑包:
http://symfony.com/doc/current/bundles/FOSJsRoutingBundle/usage.html
使用此捆绑包,您可以在javascript中生成路由
答案 1 :(得分:1)
在呈现页面时会解析树枝,因此在页面加载时会设置路径声明中的id变量。
最简单的解决方法是更改路由以接受id的可为空参数,然后将id添加到JavaScript中的路由中。 此外,要在JavaScript中使用,您需要使用url twig函数,因为它提供了绝对URL,path提供了相对URL。参考:What is the difference between 'url' and 'path' in symfony2.3
示例routing.yml;
my_route:
path: /foo/bar/{id}
defaults: { _controller: AppBundle:Foo:bar, id: null }
然后在你的树枝上;
<script>
var url = '{{ url('my_route') }}'+'/';
var id = $(this).attr('data-id');
$('#educationDialog').load(url+id, function () {
// ...
});
</srcipt>
答案 2 :(得分:1)
问题很简单。
可以传递data-url,而不是传递data-id属性<span id="editSchool" data-url="{{ path('_education_edit', {'id': id}) }}">
Edit School
</>
$('#editSchool').click(function () {
var url = $(this).data('url');
$('#educationDialog').load(url, function () {
$('.closeDialog, #person_education_form_cancel').click(function () {
$('#addSchool').trigger('click');
});
});
});