PHP 模板 - 使用 PHP

标签 php templates

<分区>

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

我特别感兴趣的是处理:

  1. 在重复 block 中检测它是第一个还是最后一个元素
  2. 轻松处理奇数/偶数情况,例如斑马条纹表或类似情况
  3. 其他模数逻辑,您需要每隔 n 次执行某项操作。

我正在寻找可以减轻这种痛苦的东西:

<?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-tags 的东西让我感到畏缩。

最佳答案

您无需多次打开标签。如果你多次做同样的事情,你也可以用它来做一个函数:

<?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");

关于PHP 模板 - 使用 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/163834/

相关文章:

php - HTTP Post 参数以 json 编码传递给 $_POST

PHP流套接字不解密数据

c++ - 显式模板实例化

javascript - Meteor.js 实现单例确认框

php - MySQL order by DESC 挂起; ASC 还不错

php - Laravel 规则和正则表达式 (OR) 运算符的问题

php - 提交表单后出现错误时间 Php Mysql Strtotime

ruby-on-rails - mustache 中标签助手的正确程序

c++ - 为什么T&&实例化为int&?

c++ - 带有模板的 shared_ptr