从javaScript设置twig变量

时间:2017-01-06 11:12:49

标签: javascript symfony twig

我需要生成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');
                });
            });
        });

如果有可能,你有解决方案吗?

3 个答案:

答案 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');
            });
        });
    });