PHP Mustache - 运行 模板化时通过函数的数据

PHP Mustache - Run data through function while templating

我是 Mustache 的初学者,我正在尝试在我的项目中实现它。它没有胡须。我不知道如何执行以下操作(也许是因为我不知道 Google 的关键字是什么?)。

如果问题标题不清楚,我很抱歉。我不知道如何用更清楚的方式来表达它。如果有人能帮我修改一下标题就最好了

基本上,我有一组背景颜色要转换为 CSS 内部样式。但是我也想在打印出来之前处理数组,生成数组中每个背景颜色的文本颜色。

颜色数组:

$colors = array(
    array(
        "name" => "blue",
        "hex" => "#6CC5FA"
    ),
    array(
        "name" => "red",
        "hex" => "#840715"
    ),
    ...
)

我有一个接受输入颜色字符串并输出对比文本颜色的函数。目前,我正在使用循环来回显 <style>

我想打印出这样的输出:

<style>
.bg-blue {
    background-color:#6CC5FA;
    color: #333333  /*This is the contrast color*/
}
.bg-red {
    background-color:#840715;
    color: #ffffff
}
....
</style>

目前的方法(显然没有小胡子)是这样的:

echo "<style>";
for ($i=0;i<sizeof($colors);i++) {
    echo ".bg-".$colors[$i]["name"]....contrastColor($colors[$i]["hex"])....;
    //You get the idea
}
echo "</style>";

我知道我可以使用循环将生成的文本颜色推送到带有 Mustache 的 $colors then 模板中,但是有没有办法将函数滑入模板并告诉小胡子要运行颜色代码通过吗?

有这样的吗?

$color_template = '
<style>
{{#color}}
.bg-{{name}} {
    background-color:{{hex}};
    color: {{contrastColor(hex)}}
}
{{/color}}
</style>
';

是的!您可以使用 the FILTERS pragma 来做到这一点:

{{% FILTERS }}
<style>
  {{# color }}
    .bg-{{ name }} {
      background-color: {{ hex }};
      color: {{ hex | contrastColor }};
    }
  {{/ color }}
</style>