从Pug编译Twig文件时,无法在标签中用{%...%}添加条件属性求助
我之前也踩过这个坑!Pug的属性解析逻辑和Twig的模板标签混用时确实容易冲突,你原来的写法会被Pug当成无效语法处理,所以没法得到想要的Twig输出。给你几个亲测有效的解决方案:
方案1:用Pug的未转义后缀直接注入Twig代码
这是最简洁的方法,利用Pug的!=语法告诉编译器直接输出后面的字符串,不做任何解析,这样Twig的条件代码就能原封不动保留:
input!= ' {% if required %}required{% endif %}'
编译后生成的Twig代码就是你想要的:
<input {% if required %}required{% endif %} />
方案2:处理多个条件属性
如果需要同时控制多个属性,直接把所有Twig条件拼在同一个字符串里就行:
input!= ' {% if required %}required{% endif %} {% if disabled %}disabled{% endif %}'
对应的Twig输出:
<input {% if required %}required{% endif %} {% if disabled %}disabled{% endif %} />
方案3:直接写原始HTML(适合复杂场景)
如果觉得上面的写法不够直观,也可以直接在Pug里插入原始的HTML片段,用|前缀标记:
|<input {% if required %}required{% endif %} />
这种方式虽然简单,但会失去Pug的缩进语法优势,适合偶尔处理特殊标签的情况。
为什么原来的写法不行?
Pug会解析属性括号()里的内容,把Twig的{%...%}当成非法语法,所以要么报错,要么输出不符合预期的内容。而!=语法会绕过Pug的属性解析逻辑,直接把字符串输出到标签中,完美适配Twig的模板语法。
内容的提问来源于stack exchange,提问作者Harry
相关产品推荐
相关产品推荐

