从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标签时,是否只是越过“行”?
答案 0 :(得分:3)
你可以做更好的检查,而不是在视图中推断那个逻辑。例如,你正在做if($row->Purchased == '-1')
这样的事情,实际上最好有if($row->isPurchase)
,这样就可以确定有效性,并且控制流程会进一步放在模型的状态上。如果你在整个代码示例中遵循这个逻辑,你会发现它实际上变成了更简单的东西。
答案 1 :(得分:0)
MVC问题:我如何知道何时将太多逻辑放入我的观点?
IMHO
如果您的逻辑除了做出表达决定之外还做其他事情。 在示例中,所有if语句都在执行图形化操作。 所以我认为该代码没有任何问题。
使用所有这些php标签可以使视图看起来像一团糟。但那只是php。 这就是为什么我使用smarty,它使它更具可读性。 是的我知道php是一种模板语言,但它只是我的意见。