简体   繁体   中英

Handlebars/Mustache with Symfony/PHP7

I am trying to work with handlebar templates, but it's not going so well.

In *.html.twig I have:

<script id="entry-template" type="text/x-handlebars-template">
    <div class="entry">
        <h1>{{title}}</h1>
        <div class="body">
            {{body}}
        </div>
    </div>
</script>

<span id="demo">
</span>

<script>
    var source   = document.getElementById("entry-template").innerHTML;
    var template = Handlebars.compile(source);
    var context = {title: "My New Post", body: "This is my first post!"};
    var html    = template(context);
    document.getElementById("demo").innerHTML = html;    
</script>

And there is an error:

Variable "title" does not exist.

When I put this code in simple index.html w/o Symfony etc. it works. Any ideas how to fix it?

This is happening because Twig is also an HTML templating language which also uses {{ ... }} syntax to denote variables, just like Mustache is, so Twig is trying to parse it before outputting the HTML.

If you want to use Twig and Mustache together, then you'll need to escape/double-encode the curly braces that are intended for Mustache so that Twig doesn't try to parse them first.

Github上有一个仓库 ,可让您为车把模板定义自己的自定义定界符。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM