【问题标题】:what should be in a MVC view [closed]MVC视图中应该有什么[关闭]
【发布时间】:2012-12-18 17:14:52
【问题描述】:

对于 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
    }
}

【问题讨论】:

  • 就个人而言,我认为您的视图可以包含呈现数据所需的任何逻辑,但您需要。无论如何,Codeigniter 提供了很大的灵活性,它不强加规则。您在视图中包含循环和条件逻辑当然不会破坏任何内容,最终由您自己判断。
  • 一个视图,在真正的 MVC 中是一个实例,它包含 UI 逻辑、处理多个模板并能够从模型层请求它需要的数据。但是 CI 做 MVC 就像宗教做道德一样。
  • 谢谢。不确定标准是否得到更严格的执行。是的......逻辑,抱歉笼统
  • 为什么投票结束?对我来说似乎是一个非常明确的问题,并且有一个非常明确的答案。
  • @JasonSwett,我认为它不符合 SO 标准,此时主要取决于编码器的偏好。它还有some dups

标签: php codeigniter model-view-controller


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    控制器:

    $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; ?>
    

    【讨论】:

      【解决方案3】:

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

      <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 ?>
      

      请注意语法有何不同。我强烈推荐使用alternative PHP syntax

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

      希望对您有所帮助。

      【讨论】:

      • 一开始我打算走这条路,但是数组会有一个动态计数,我想在每次更新时将“添加”链接放在它的末尾,无论它是否有计数为 1 或 10。
      猜你喜欢
      • 2011-03-06
      • 2014-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-07
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      相关资源
      最近更新 更多