2009-07-22 6 views
1

Considérez ce qui suit à partir de CodeIgniter. Si je fais cela mal, alors s'il vous plaît dites-moi:MVC Question: Comment savoir si je mets trop de logique dans ma vision?

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

Je sais que certains d'entre eux n'auront pas de sens. J'expérimente et aussi changé certains des noms de champs.

Ma question est: est-ce trop de mélange de code dans ma vue? Il semble que cela se produise avec la plupart des modèles, mais qu'il y a une ligne vague qui se sent mal quand vous la traversez et vous dites: "C'est trop de logique à mon avis." Je ne connais pas cette ligne. Est-ce que cet exemple le traverse? A foreach, if thens, echo, strtotime, les balises? Php, etc.

Est-ce juste en traversant la "ligne" quand je mets la logique d'accès db et commencer à émettre toutes mes balises html à partir d'instructions print ou response.write sur une grande page dans les coulisses sur le serveur?

+0

Votre exemple de code serait plus facile à lire si l'indentation représentait systématiquement la hiérarchie du balisage. – eyelidlessness

+0

Je voulais dire que vous ne faites rien de mal à mon avis. Toute votre logique fait quelque chose avec la mise en page. – MrHus

Répondre

3

Vous pouvez effectuer de meilleures vérifications au lieu de déplacer cette logique dans la vue. Par exemple, vous faites des choses comme if($row->Purchased == '-1') alors qu'en fait il vaudrait mieux avoir if($row->isPurchase), de cette façon la détermination de la validité et le contrôle du flux est placé plus loin sur l'état de votre modèle. Si vous avez suivi cette logique tout au long de votre exemple de code, vous verrez qu'il se transforme en quelque chose de beaucoup plus simple.

+1

Je ne suis pas sûr de ce que vous voulez dire. Peut-être que c'est parce que je n'ai pas encore travaillé avec le modèle, mais qu'est-ce que "isPurchase"? – johnny

+0

Vous déterminez si c'est un achat en vérifiant combien sont achetés je suppose? Eh bien ce genre de logique ne devrait pas être fait dans la vue, vous devriez simplement avoir un drapeau indiquant si c'est un achat ou non, qui est ce que "isPurchase", il vous dit si c'est un achat. – Kezzer

0

MVC Question: Comment savoir si je mets trop de logique dans ma vision?

à mon humble avis

Si votre logique est en train de faire autre chose que de prendre des décisions de présentation. Dans l'exemple, toutes vos instructions if font quelque chose de graphique. Donc, je pense qu'il n'y a rien de mal avec ce code. L'utilisation de toutes ces balises php peut donner l'apparence d'un désordre à une vue. Mais c'est juste php. C'est pourquoi j'utilise smarty, ça le rend un peu plus lisible. Ouais, je sais que php est un langage modèle mais c'est juste mon avis.

+0

@MrHus: Clarification: Quand vous dites "Et c'est exactement ce que vous faites dans votre exemple." voulez-vous dire: sa logique * est-elle autre chose que de prendre des décisions de présentation ou * n'est-elle pas *? –

+0

@Grant: Je suis content que vous ayez demandé cela parce que moi aussi j'étais confus. J'étais heureux que j'aie pu faire quelque chose de bien, puis de nouveau triste. – johnny

+0

@MrHus: vous avez raison, la vérification des valeurs '-1' n'est pas une décision de présentation, c'est une logique métier qui existe dans la vue. – Kezzer

Questions connexes