如何在Twig中从字符串输出指定help_前缀水果键对应的数据
嘿,这个需求我之前做项目时也碰到过,给你分享两种实用的解决思路,分PHP后端处理和Twig模板内处理两种场景,按需选择就行:
方案一:PHP端预处理数据(推荐)
从MVC的分离原则来看,后端提前把需要的数据整理好再传给模板会更清晰,也更高效。你可以在PHP里过滤出所有以help_为前缀的键值对,再把这个整理后的数组传给Twig:
// 假设你的原始数据是这个数组 $originalData = [ 'help_apple' => '苹果的帮助信息', 'help_banana' => '香蕉的帮助信息', 'help_orange' => '橙子的帮助信息', 'other_key' => '无关数据' ]; // 用array_filter筛选带help_前缀的键 $helpFruits = array_filter($originalData, function($key) { return str_starts_with($key, 'help_'); }, ARRAY_FILTER_USE_KEY); // 把整理好的数组传给Twig模板 $twig->render('your-template.twig', ['helpFruits' => $helpFruits]);
然后在Twig里直接遍历这个整理好的数组就行:
{% for key, info in helpFruits %} <p>{{ key }}: {{ info }}</p> {% endfor %}
如果你的PHP版本低于8.0(不支持str_starts_with),可以换成substr($key, 0, 5) === 'help_'来判断前缀。
方案二:直接在Twig模板内处理
如果不想改动后端代码,也可以直接在Twig里做判断筛选。Twig自带starts with测试,能直接判断键的前缀:
{% for key, info in originalData %} {% if key starts with 'help_' %} <p>{{ key }}: {{ info }}</p> {% endif %} {% endfor %}
要是你需要多次用到这个筛选逻辑,还可以自定义一个Twig过滤器,让代码更简洁:
// 在PHP里注册自定义过滤器 $twig->addFilter(new Twig\TwigFilter('filter_help_prefix', function($data) { return array_filter($data, function($key) { return str_starts_with($key, 'help_'); }, ARRAY_FILTER_USE_KEY); }));
然后在Twig里直接用过滤器:
{% for key, info in originalData|filter_help_prefix %} <p>{{ key }}: {{ info }}</p> {% endfor %}
这样不管哪种方式,都能精准输出你需要的带help_前缀的水果键对应的数据啦~
内容的提问来源于stack exchange,提问作者Peter Jack
相关产品推荐
相关产品推荐

