PHP 模板 - 使用 PHP [已关闭]

2022-08-30 20:54:45

您见过的最优雅的模板(最好是纯PHP!)解决方案是什么?

具体来说,我对处理以下内容感兴趣:

  1. 在重复块中检测它是第一个元素还是最后一个元素
  2. 轻松处理奇数/偶数情况,如斑马条纹表或类似情况
  3. 其他模逻辑,你每隔一次就会做一些事情。

我正在寻找一些可以减轻痛苦的东西:

<?php
$persons = array('John', 'Jack', 'Jill', 'Jason');
?>

<?php $i = 0; ?>
<?php if (isset($persons)): ?>
<ul>
<?php foreach ($persons as $name): ?>
    <li class="<?= ($i++ % 2 === 0) ? 'odd' : 'even' ?>"><?= $name ?></li>
<?php endforeach ?>
</ul>
<?php endif ?>

真的需要上面的混乱来创建下面这样的东西吗?

<ul>
    <li class="odd">John</li>
    <li class="even">Jack</li>
    <li class="odd">Jill</li>
    <li class="even">Jason</li>
</ul>

难道只有我发现上述近乎可怕吗?

所有这些开始和关闭php标签让我畏缩不前。


答案 1

您无需多次打开标签。如果您多次执行相同的操作,也可以从中创建函数:

<?php
function makeul($items, $classes) {
  $c = count($classes);
  $out = "";

  if (isset($items) && count($items) > 0) {
    $out = "<ul>\n";
    foreach ($items as $item) {
      $out .= "\t<li class=\"" . $classes[$i++%$c] . "\">$item</li>\n";
    }
    $out .= "</ul>\n";
  }
  return $out;
}
?>

other page content

<?php
$persons = array('John', 'Jack', 'Jill', 'Jason');
$classes = array('odd', 'even');
print makeul($persons, $classes);
?>

另外,如果你不介意使用Javascript,Jquery使mod 2的事情变得非常容易(例如,对于斑马条纹表):

$("tr:odd").addClass("odd");
$("tr:even").addClass("even");

答案 2

小而坚固

www.tinybutstrong.com

它不会犯在页面中嵌入另一种宏语言的聪明错误,但确实允许您处理我曾经抛出的每一个实际的Web显示问题。特别是上面的奇数/偶数结构是一个蹒跚学步。对于从数据库表中进行选择的代码之类的内容

在 PHP 文件中

$TBS->MergeBlock('blk1',$sqlconnect, "SELECT name from people ");

在 HTML 文件中

<ul>
    <li class="odd">[blk.name;block=ul]</li>
    <li class="even">[blk.name;block=ul]</li>
</ul>

就是这样。请注意,HTML 是完全与 Dreamweaver 兼容的。此外,如果我想在三种行样式上交替使用,我需要做的就是添加额外的行,也许有不同的类,所以

<ul>
    <li class="linestyle1">[blk.name;block=ul]</li>
    <li class="linestyle2">[blk.name;block=ul]</li>
    <li class="linestyle3">[blk.name;block=ul]</li>
</ul>

推荐