PHP通用模板在树枝上。如何重用代码?

时间:2018-01-23 11:05:50

标签: php html symfony twig refactoring

我是PHP的新手。我有几个网站,其中唯一的区别是令牌。我使用twig templating。我怎样才能重构我的代码,不重复自己并使代码更正确?我假设在twig中有一种方法可以创建一个基本模板并重用它。它应该如何看待我的情况?

我的档案:

<!DOCTYPE html>
<html>
<head>
    <link rel="stylesheet" type="text/css" href="../web/assets/css/error-templates.css">
</head>
<body>
    <img class="logo" src="/assets/img/logo.png">
    <div class="container">
        <div class="wrap">  
         {# The only different is token below #}    
            ::CLOUDFLARE_ERROR_500S_BOX::
        </div>
    </div>
</body>
</html>

另一个档案:

<!DOCTYPE html>
<html>
<head>
    <link rel="stylesheet" type="text/css" href="../web/assets/css/error-templates.css">
</head>
<body>
    <img class="logo" src="/assets/img/logo.png">
    <div class="container">
        <div class="wrap">  
       {# The only different is token below #}
            ::ALWAYS_ONLINE_NO_COPY_BOX::
        </div>
    </div>
</body>
</html>

1 个答案:

答案 0 :(得分:3)

创建一个扩展名为twig的主模板文件(例如main.twig),其中包含以下内容:

<!DOCTYPE html>
<html>
<head>
    <link rel="stylesheet" type="text/css" href="../web/assets/css/error-templates.css">
</head>
<body>
    <img class="logo" src="/assets/img/logo.png">
    <div class="container">
        <div class="wrap">  
         {% block BodyMain %}{% endblock %}
        </div>
    </div>
</body>
</html>

在您的其他页面中,请使用以下代码

{% extends "main" %}
{%block BodyMain %}
   ::ALWAYS_ONLINE_NO_COPY_BOX::
{% endblock %}

参见参考twig extends documentation