0

对于codeigniter / php中的视图,以下是否考虑太多?$springtrail 是在模型中计算的数组在哪里?

<div id="page_name">Website</div>
<?php
$count = count($springtrail);
for($i = $count; $i >= 1; $i--){
    if ($i != 1)
    {
        ?> <div class="springtrail_button" id="st-0">arrayitem</div> <?php
    } else
    {
        ?> <a class="springtrail_link" href="#" id="1">Add</a> <?php
    }
}
4

3 回答 3

4

不,它与您的外观逻辑有关,因此将其放在您的视图之外实际上会从您的视图中删除逻辑(并将其放在其他地方),从而破坏您的 mvc 模型

于 2012-12-18T17:23:07.107 回答
1

我觉得没关系,只要你不扩展太多。

但是,最好将该逻辑保留在控制器中......因此您可以执行以下操作:

控制器:

$count = count($springtrail);
for($i = $count; $i >= 1; $i--) {
    $data['s_count'] = ($i !== 1 ? 'button' : 'link');
}

看法:

<?php if($s_count == 'button'): ?>
   <html here>
<?php else: ?>
   <other html here>
<?php endif; ?>
于 2012-12-18T17:25:22.857 回答
0

是的,我会说这太合乎逻辑了。我想我可能会做这样的事情:

<div id="page_name">Website</div>

<a class="springtrail_link" href="#" id="1">Add</a>

<?php foreach ($springtrail as $item): ?>
  <div class="springtrail_button" id="st-0">arrayitem</div>
<?php endforeach ?>

请注意语法有何不同。我强烈建议使用替代 PHP 语法

我认为,每当您发现自己在视图中分配变量值时,这表明您走错了路。至于以不同方式显示列表中的第一项,好吧,如果第一项与其他项不同,那么我会说它不是该列表的真正成员,对吗?使其成为控制器中的单独值。不过,看起来您甚至没有为第一项输出变量值,那么为什么不在开始输出列表之前静态显示它呢?

希望有帮助。

于 2012-12-18T17:24:25.140 回答