如何在树枝中创建自定义标记块?

时间:2016-08-10 01:29:06

标签: php twig

我正在为我的项目使用twig模板。现在我想创建自定义块例如

{% addscript %}
<script>
//here is my content script
</script>
{% endaddscript %}

也{%addscript&#39;页脚&#39; %} {%endaddscript%}或{%addscript&#39; header&#39; %} {%endaddscript%}很好

并且脚本内容将解析到我的名为addScript的php函数

Class Theme{
      private $css = array();
      public function addScript($script){
        $this->css[] = $script;
      }
}

经过一天的搜索和阅读文件在树枝上我发现这个主题,但不起作用! How to create a twig custom tag that executes a callback?

我使用作曲家最新版本的twig安装

1 个答案:

答案 0 :(得分:1)

从评论中我可以看出,您不需要自定义Tag来做您想做的事情。您可以使用blockstags用于修改模板的编译版本,而不是其内容。

base.twig.html

<!DOCTYPE html>
<html>
    <head>
        <title>{{ title | default('Hello World') }}</title>
        <link rel="stylesheet" type="text/css" href="theme.css">
        {% block css %}
        {% endblock %}
    </head>
    <body>
    {% block body %}
        <nav>
        {% block navigation %}
            <a href="#">Link</a>
            <a href="#">Link</a>
            <a href="#">Link</a>
        {% endblock navigation %}
        </nav>
        <section id="container">
            <section id="content">
            {% block content %}
            {% endblock content %}
            </section>
        </section>
    </section>
    {% endblock body %}
    {% block scripts %}
    {% endblock %}
    {% block javascript %}
    {% endblock %}
    </body>
</html>

child.twig.html

{% extends "base.twig.html" %}
{% block css %}
    <link rel="stylesheet" type="text/css" href="child.css">
{% endblock %}

{% block content %}
    <h1>Hello Child</h1>
{% endblock %}


{% block javascript %}
<script>
    $(function() {
        console.log('Hello Child');
    });
</script>
{% endblock %}
{% block scripts %}
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
{% endblock %}