PHP胡子 - 在模板

时间:2016-02-14 05:16:15

标签: php mustache mustache.php

我是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>

当前的方法(显然没有Mustache)是这样的:

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模板,但有没有办法将函数放入模板并告诉Mustache运行通过它的颜色代码?

有类似的东西吗?

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

1 个答案:

答案 0 :(得分:0)

是的!您可以使用the FILTERS pragma执行此操作:

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