Model view controller MVC问题:我如何知道我什么时候';我把太多的逻辑放在我的观点上了?

Model view controller MVC问题:我如何知道我什么时候';我把太多的逻辑放在我的观点上了?,model-view-controller,Model View Controller,考虑CodeIgniter的以下内容。如果我做错了,请告诉我: <html> <head> <title><?=$title ?></title> </head> <body> <h1><?=$heading; ?></h1> <?php foreach ($query->result() as $row):?> &

考虑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、if thens、echo、strotime、php标记等


当我放入db access逻辑并开始从print或response发出所有html标记时,是否只是越过了“界限”。在服务器后台的一个大页面上编写所有语句?

您可以进行更好的检查,而不是将该逻辑推到视图中。例如,您正在执行类似于
if($row->purchase=='-1')
的操作,而实际上最好是使用
if($row->isPurchase)
,这样确定有效性和控制流的方式将进一步放在模型的状态上。如果您在整个代码示例中遵循此逻辑,您将看到它实际上变成了更简单的东西。

MVC问题:我如何知道何时在视图中放入了太多的逻辑

伊姆霍

如果你的逻辑是做任何事情,而不是做表象决定。 在本例中,所有if语句都在执行图形化操作。 所以我认为这个代码没有错

使用所有这些php标记会使视图看起来一团糟。但这只是php。 这就是我使用smarty的原因,它使它更具可读性。
是的,我知道php是一种模板语言,但这只是我的观点

我不知道你的意思。可能是因为我还没有使用过这个模型,但是什么是“isPurchase”?你是通过检查我假设购买了多少来确定这是否是一次购买?这种逻辑不应该在视图中进行,你应该有一个标志,指示它是否是购买,这就是“isPurchase”,如果缩进一致地表示标记的层次结构,那么您的示例代码将更容易阅读。我的意思是,在我看来,您没有做错任何事情。你所有的逻辑都是在布局上做一些事情。@Hus:澄清:当你说“这正是你在你的例子中所做的。”你的意思是:他的逻辑是在做一些事情,而不是做一些表现性的决定吗?格兰特:我很高兴你问这个问题,因为我也很困惑。我很高兴我可能做了一些正确的事情,然后又很难过。@MrHus:你是对的,对照“-1”值检查不是表象决策,而是视图中存在的业务逻辑。