简单的PHP模板循环

时间:2015-07-16 22:31:30

标签: php loops template-engine

嘿,我为我们的设计师编写了一个非常简单的模板系统。它使用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和喜欢这些工作太大而且太麻烦。它还为设计师引入学习曲线,采用模板语言。

1 个答案:

答案 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);

这应该可以胜任。