如何将含echo的PHP循环代码改为MVC式HTML与PHP分离写法?
解决方案
你的改写方向没问题,失败是因为输出PHP变量时用错了语法——你写的<?$变量?>缺少了输出所需的等号,正确的短输出标签应该是<?=$变量?>(等同于<?php echo $变量; ?>)。
以下是修正后的完整可行代码:
<?php $i = 1; $tabsuffix = strtolower($content['tabs'][0]['label']); foreach($content['tabs'] as $key => $tab): $tabid = $tab['label'] . "-" . $tabsuffix; ?> <li class="nav-item" role="presentation"> <button class="nav-link <?= ($i == 1 ? "active" : "") ?> blob" id="pills-<?=$tabid?>-tab" data-bs-toggle="pill" data-bs-target="#pills-<?=$tabid?>" type="button" role="tab" aria-controls="pills-<?=$tabid?>" aria-selected="<?= $i == 1 ? "true" : "false" ?>"> <h2 class="h4"><?=$tab["label"]?></h2> </button> </li> <?php $i++; endforeach; ?>
核心修正说明:
- 所有需要输出变量的位置,将
<?$变量?>替换为<?=$变量?>,这是实现HTML与PHP分离输出的关键 - 修复了
aria-selected的逻辑:原代码中所有标签都设为true不符合组件规范,现在只有第一个激活的标签设为true,其余为false - 开头用
<?php替代短标签<?,避免部分服务器未开启短标签支持导致代码无法运行
内容的提问来源于stack exchange,提问作者Sam Miller
相关产品推荐
相关产品推荐

