我在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
它不被解释为树枝变量,而是文本
感谢您的帮助
答案 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'));
});