Twig 是 Symfony 標準模板引擎,語法簡潔、安全、支持繼承。本文總結核心語法、模板繼承、Asset 管理最佳實踐。
| 標籤 | 用途 | 示例 |
|---|---|---|
{{ ... }} | 輸出變量/表達式 | {{ user.name }} |
{% ... %} | 控制結構/邏輯 | {% if user.active %}...{% endif %} |
{# ... #} | 註釋(不輸出到 HTML) | {# 這是註釋 #} |
{# base.html.twig #}
<html>
<head>
{% block global_css %}{% endblock %}
{% block global_js %}{% endblock %}
{% block my_css %}{% endblock %}
{% block my_js %}{% endblock %}
</head>
<body>
{% block body %}{% endblock %}
</body>
</html>
{# index.html.twig #}
{% extends "AppWebBundle::layout.html.twig" %}
{% block my_js %}
{% javascripts '@AppWebBundle/Resources/public/js/index/*' %}
<script src="{{ asset_url }}"></script>
{% endjavascripts %}
{% endblock %}
{% block my_css %}
{% stylesheets '@AppWebBundle/Resources/public/css/index/*' %}
<link rel="stylesheet" href="{{ asset_url }}">
{% endstylesheets %}
{% endblock %}
{% block body %}...{% endblock %}
{{ asset('js/app.js') }}{% javascripts '@Bundle/Resources/public/js/*' %} 自動輸出目錄下所有文件config.yml 啟用:assetic: bundles: [AppWebBundle]
global_css、global_js 區塊,子模板通過 my_css、my_js 追加頁面專用資源,{{ parent() }} 保留父區塊內容。# Windows
php app/console assets:install web
# Linux/Mac(軟連接,開發友好)
php app/console assets:install web --symlink --relative
Twig 的繼承機制與 Assetic 結合,實現了資源的模塊化管理與按需加載,是大型項目前端架構的基石。