首页
/ MtHaml项目中的Twig语法详解:Haml与Twig的完美结合

MtHaml项目中的Twig语法详解:Haml与Twig的完美结合

2025-06-08 23:14:55作者:廉皓灿Ida

什么是MtHaml/Twig

MtHaml是一个将Haml简洁语法与Twig模板引擎相结合的项目。Haml是一种HTML的简洁语法表示法,通过缩进和特殊符号来简化HTML编写,而Twig是PHP生态中广泛使用的模板引擎。MtHaml/Twig让开发者可以同时享受Haml的简洁语法和Twig的强大功能。

Haml基础语法快速入门

基本标签语法

在Haml中,标签以百分号(%)开头,后跟标签名。这与传统HTML的尖括号语法形成鲜明对比:

%strong= item.title

等价于Twig模板:

<strong>{{ item.title }}</strong>

这里的=符号表示后面的内容是Twig表达式,需要被解析并输出。

属性添加方式

Haml提供了多种方式来添加HTML属性:

  1. 类似HTML的语法
%strong(class="code" id="message") Hello, World!
  1. CSS风格的简写(特别适合class和id):
%strong.code#message Hello, World!
  1. 默认div标签(当省略标签名时):
.message Hello, World!

等价于:

<div class="message">Hello, World!</div>

嵌套结构与缩进规则

Haml使用缩进来表示嵌套关系,这与Python类似。缩进规则决定了标签的自动闭合:

#content
  .left.column
    %h2 Welcome to our site!
    %p= information
  .right.column
    - include "sidebar.twig"

会被转换为:

<div id="content">
  <div class="left column">
    <h2>Welcome to our site!</h2>
    <p>{{ information }}</p>
  </div>
  <div class="right column">
    {% include "sidebar.twig" %}
  </div>
</div>

重要规则

  • 当有内联内容时,标签在同一行自动闭合
  • 否则,当缩进级别降低到与开始标签相同时自动闭合
  • 自闭合标签(如img、meta)有特殊处理规则

Haml与Twig的交互方式

输出Twig表达式

在Haml中输出Twig表达式主要有以下几种方式:

  1. 使用=符号
%p.para= some.twig()|expression

转换为:

<p class="para">{{ some.twig()|expression }}</p>
  1. 字符串插值
%span Hello #{ name }

转换为:

<span>Hello {{ name }}</span>
  1. 属性值中的表达式
%span(id=any_valid_twig|syntax)

转换为:

<span id={{ any_valid_twig|syntax }}></span>

Twig控制结构

不直接输出的Twig代码(控制结构)以-开头:

%p
  - if some.condition|default(0) > 1 or foo in bar
    This is a control structure

转换为:

<p>
  {% if some.condition|default(0) > 1 or foo in bar %}
    This is a control structure
  {% endif %}
</p>

自动闭合规则

  • 如果标签后有缩进内容,MtHaml会自动添加结束标签
  • 否则,不添加结束标签

高级用法示例

  1. 继承与块
- extends "layout.twig"

- block title "this is an inline block"

- block body
  .content
    %h1 Title
    This block has contents
  1. 宏定义
- macro input_text(name, value)
  %input(type="text" name=name value=value)

- import _self as forms

= forms.input_text("foo", "bar")

最佳实践与注意事项

  1. 缩进一致性:必须保持严格的缩进一致性,建议使用空格而非制表符
  2. 表达式平衡:在属性值中,确保括号、引号等符号成对出现
  3. Twig功能全支持:MtHaml支持所有Twig功能,包括过滤器、测试、运算符等
  4. 自定义标签:可以无缝使用自定义Twig标签

MtHaml/Twig结合了Haml的简洁性和Twig的强大功能,为模板开发提供了高效、优雅的解决方案。通过理解其转换规则,开发者可以充分利用两者的优势,编写出更简洁、更易维护的模板代码。

登录后查看全文
热门项目推荐

项目优选

收起