如何在Twig中实现未调用replace时自动移除%attr%占位符?
解决方案
你可以通过Twig原生的default过滤器结合replace来实现需求,无需额外扩展:
方法一:提前定义可选变量
先定义一个可选的属性变量,默认值为空字符串,用户未传入时,%attr%会被替换为空,不会显示在输入框中:
{% set custom_attr = custom_attr | default('') %} {{ '<input type="text" %attr%>' | replace({'%attr%': custom_attr}) | raw }}
方法二:直接在replace中使用default
如果不想额外定义变量,也可以直接在replace的替换值里嵌套default过滤器:
{{ '<input type="text" %attr%>' | replace({'%attr%': custom_attr | default('')}) | raw }}
两种方法效果一致:当用户设置了custom_attr(比如custom_attr = 'id="12"'),输出为<input type="text" id="12">;若用户未设置该变量,输出则是<input type="text" >(多余空格不影响HTML渲染)。
内容的提问来源于stack exchange,提问作者Sjender
相关产品推荐
相关产品推荐

