MVC问题:我如何知道何时将太多逻辑放入我的视野?

时间:2009-07-22 21:50:53

标签: model-view-controller

从CodeIgniter中考虑以下内容。如果我这样做错了,请告诉我:

<html>
<head>
    <title><?=$title ?></title>
</head>
<body>
    <h1><?=$heading; ?></h1>


        <?php foreach ($query->result() as $row):?>
    <p>
        <?=$row->LastName . ', ' . $row->FirstName . ' ' . $row->MiddleName?>
        </br>
        <?=$row->myField?>
        <?php if ($row->myField == ''):?>
        no data found
        <?php endif;?>
        some text
        <?=$row->anotherField ?>
        </br>
        <?php if ($row->purchasedate !='') {echo 'Purchase Date ' . mdate('%m' . '/' . '%d' .  '/' . '%Y', strtotime($row-> purchasedate));}?>

    </p>        
    <p>
      <label for="ProductNumber">Product</label>
      <input type="text" name="Product_number" id="ProductNumber" value = 
    <?=$row->ProductNumber?>
     />
    </br>
    <?php if ($row->Purchased == '-1'): ?>
    <h3>Bought</h3>
    <?php endif;?></br>
    <?php if ($row->Sold == '-1'): ?>
    <h3>Sold</h3>
    <?php endif;?></br>
    </p>

            <?php endforeach;?>

</body>
</html>

我知道其中一些没有意义。我正在试验,也改变了一些字段的名称。

我的问题是:代码混合到我的视图中是不是太混杂了?似乎这种情况发生在大多数模板上,但有一些模糊的线条,当你穿过它时会感觉不对,你说,“在我看来,这是太多的逻辑。”我不知道那条线。这个例子是否越过了它?一个foreach,如果thens,echo,strtotime,?php标签等

当我放入数据库访问逻辑并开始从服务器后面的一个大页面上的print或response.write语句中发出所有html标签时,是否只是越过“行”?

2 个答案:

答案 0 :(得分:3)

你可以做更好的检查,而不是在视图中推断那个逻辑。例如,你正在做if($row->Purchased == '-1')这样的事情,实际上最好有if($row->isPurchase),这样就可以确定有效性,并且控制流程会进一步放在模型的状态上。如果你在整个代码示例中遵循这个逻辑,你会发现它实际上变成了更简单的东西。

答案 1 :(得分:0)

MVC问题:我如何知道何时将太多逻辑放入我的观点?

IMHO

如果您的逻辑除了做出表达决定之外还做其他事情。 在示例中,所有if语句都在执行图形化操作。 所以我认为该代码没有任何问题。

使用所有这些php标签可以使视图看起来像一团糟。但那只是php。 这就是为什么我使用smarty,它使它更具可读性。 是的我知道php是一种模板语言,但它只是我的意见。

相关问题