【问题标题】:Simple PHP Templating With Looping带有循环的简单 PHP 模板
【发布时间】:2015-07-16 22:31:30
【问题描述】:

嘿,我写了一个非常简单的模板系统供我们的设计师使用。它在后台使用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 和类似的东西对于这项工作来说太大而笨重。它还介绍了设计人员采用模板语言的学习曲线。

【问题讨论】:

  • ....为什么不使用像 Twig 这样的模板引擎?这显然不是一个学习练习,所以时间就是金钱。以他人的工作为基础。
  • @Anonymous Twig、smarty 之类的东西对于工作来说太大太麻烦了。它还介绍了设计师采用模板语言的学习曲线。
  • <?php foreach ($items as $item): ?><!-- ... --><?php endforeach ?>
  • 编写自己的模板引擎是一个愚蠢的想法。使用 Savant,它快速、有据可查且易于使用 - phpsavant.com

标签: php loops template-engine


【解决方案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);

这应该可以完成工作。

【讨论】:

    猜你喜欢
    • 2012-05-02
    • 1970-01-01
    • 1970-01-01
    • 2018-04-10
    • 2018-11-17
    • 1970-01-01
    • 1970-01-01
    • 2017-03-29
    • 2014-11-11
    相关资源
    最近更新 更多