在加载jQuery中使用twig变量

时间:2016-09-09 15:54:54

标签: jquery ajax symfony twig

我在jQuery的load函数中包含twig有一个问题,这是一个例子:

<!-- src/MyBundle/Ressources/views/index.html.twig -->

{% extends'base.html.twig' %}
{% block body %}
    <div id="layout"></div>

{% endblock %}
{% block javascripts %}
    <script src="https://code.jquery.com/jquery-2.2.0.js"></script>
    <script>
        $(function(){
            $('#layout').load("{{ asset('layout/myLayout.html.twig') }}", function(){
                alert($('#link').attr('href'));
            });
        })
    </script>
{% endblock %}

<!-- web/layout/myLayout.html.twig -->
<a id="link" href="{{ asset('layout/myLayout.html.twig') }}"> link </a>

在我加载页面的示例中,警报显示{{asset('layout / myLayout.html.twig')}}而不是http://localhost/myProject/web/layout/myLayout.html.twig

它不被解释为树枝变量,而是文本

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

这是因为您只是使用ajax加载方法加载twig模板文件,因此不会解释该文件的内容。您需要创建一个路径和一个控制器来呈现文件&#39; layout / myLayout.html.twig&#39;并在你的加载方法中使用它。

例如,如果您创建一个名为layout_route的路线,并定义了一个呈现layout/myLayout.html.twig模板的控制器操作:

<强>路由:

# routing.yml
layout_route:
    path: /layout #or whatever you choose
    defaults: { _controller : MyBundle:Layout:index }

<强>控制器:

// MyBundle/Controller/LayoutController
public function indexAction()
{
    return $this->render('MyBundle::myLayout.html.twig', array();
}

<强>使用Javascript:

$('#layout').load("{{ url('layout_route') }}", function(){
    alert($('#link').attr('href'));
});