Twig中如何拼接变量名动态获取嵌套层级的高亮颜色配置值
你之前的两种写法无法生效的核心原因是:_context存储的是Twig模板的顶级变量,你把data.po_user_setting.us_highlight_colorX这种嵌套属性的完整路径当成了根上下文的单个键名,自然是取不到值的。你需要拆分属性层级,只把动态的最后一段属性名做拼接即可。
正确实现代码
{{ attribute(data.po_user_setting, 'us_highlight_color' ~ verse.po_verse_highlight.hl_rating) }}
逻辑说明
先取到固定的前置层级data.po_user_setting,再通过attribute函数动态获取该对象/数组下的对应属性,属性名由固定前缀us_highlight_color和动态的hl_rating值拼接而成,刚好匹配你定义的变量命名规则。
如果需要兼容hl_rating超出1-5范围的异常场景,可以搭配default过滤器设置 fallback 颜色:
{{ attribute(data.po_user_setting, 'us_highlight_color' ~ verse.po_verse_highlight.hl_rating)|default('#008080') }}
内容的提问来源于stack exchange,提问作者Soroosh
相关产品推荐
相关产品推荐

