嘿,我为我们的设计师编写了一个非常简单的模板系统。它使用str_replace
来做它的事情。
它的作品很棒!现在的问题是我想对传递的一些数据做一些循环(foreach
)。
以下是模板代码的示例
$var_c = [
[
"head" => "a",
"body" => "b",
"foot" => "c"
],
[
"head" => "x",
"body" => "y",
"foot" => "z"
]
];
$tpl_vars = [
"__{var_a}__",
"__{var_b}__",
"__{var_c}__"
];
$real_vars = [
$var_a,
$var_b,
$var_c
];
str_replace($tpl_vars, $real_vars, $content_body);
注意$var_c
包含一个数组,我想循环遍历这个数组。我如何实现这一目标。
对于结构我正在思考
__startloop__
loop var_c as c
c[head]
c[body]
c[foot]
__endloop__
我似乎无法理解如何对此进行编码。 :)
更新:Twig,smarty和喜欢这些工作太大而且太麻烦。它还为设计师引入学习曲线,采用模板语言。
答案 0 :(得分:1)
请参阅我的Text-Template类。它支持条件(if),循环(for)和过滤器:https://github.com/dermatthes/text-template
示例模板(变量中的字符串):
Hello {= name},
Your list of Items:
{for curItem in items}
{=@index1}: {= curItem.name}
{/for}
PHP-代码:
<?php
$data = [
"name" => "Some Username",
"items" => [
["name" => "First Item"],
["name" => "Second Item"]
]
];
$tt = new TextTemplate ($templateString);
echo $tt->apply ($data);
这应该可以胜任。