我正在为我的项目使用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安装
答案 0 :(得分:1)
从评论中我可以看出,您不需要自定义Tag
来做您想做的事情。您可以使用blocks
,tags
用于修改模板的编译版本,而不是其内容。
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 %}