2010-06-18 2 views
2

J'ai quelques portions de code HTML qui se répètent beaucoup à travers les pages. J'ai mis ce code html dans une fonction pour qu'il soit facile à maintenir. Cela fonctionne parfaitement. Cependant, je pense que ce n'est peut-être pas une très bonne pratique.Comment gérer le code HTML qui répète beaucoup

function drawTable($item){ 
?> 
    HTML CODE HERE 
<?php 
} 

Je lance aussi le problème que lorsque je veux renvoyer des données à l'aide de JSON suivantes ne fonctionnera pas car il sera NULL:

$response['table'] = drawTable($item);  
return json_encode($response); 

Quelle est la bonne façon de gérer le code HTML répète beaucoup?

Merci

+0

Pour le JSON, la fonction doit renvoyer les données, vous ne pouvez pas retourner un déclaration écho, ou quelque chose qui affiche simplement HTML. –

+0

* (référence) * Voir la section sur [Web Presentation Patterns dans POEAA] (http://martinfowler.com/eaaCatalog/index.html) – Gordon

Répondre

1
function drawTable($item) { return '<p>something</p>'; } 

function yourOtherFunction() { 
$response['table'] = drawTable($item);  
return json_encode($response); 
} 
1

Utilisez cette définition de la fonction

function drawTable($item){ 
    return 'HTML CODE HERE'; 
} 

Appelé avec

print drawTable($item); 

qui travaillera également pour votre JSON valeur de retour.

+0

Hey, merci. Mais, je ne veux pas mettre le code html dans les citations car il s'agit de morceaux de html assez longs et il est difficile de repérer les erreurs, cela peut impliquer d'éviter certains caractères et de finir avec un désordre ... I ' m essayant de rendre le code aussi propre que possible –

3

Vous voudrez peut-être vous intéresser à l'utilisation de modèles au lieu d'utiliser des fonctions hideux de heredoc ou HTML-embedded-within-PHP, qui sont tout simplement impossibles à maintenir et qui ne sont pas compatibles IDE.

What is the best way to include a php file as a template?

Si vous avez un segment répétitif, il suffit de charger le modèle plusieurs fois en utilisant une boucle.

Bien que les modèles aident avec D.R.Y., l'objectif principal est de séparer la présentation de la logique. L'incorporation de HTML dans les fonctions PHP ne le fait pas. Sans compter que vous ne devez échapper à aucune sorte de citations ou casser l'indentation/formatage.

syntaxe Exemple lors de l'utilisation des modèles:

$data = array('title' => 'My Page', 'text' => 'My Paragraph'); 

$Template = new Template(); 
$Template->render('/path/to/file.php', $data); 

Votre page de modèle pourrait être quelque chose comme ceci:

<h1><?php echo $title; ?></h1> 

<p><?php echo $text; ?></p> 
+0

ressemble beaucoup à un cadre. Considérons un cadre, il fait tout le code de plomberie pour vous – ggfan

+0

Merci un million! Je pense que cela fera l'affaire pour l'instant. Je ne connaissais pas la fonction extract(). Et oui, une fois que j'en aurai fini avec ce projet, je vais envisager d'apprendre CakePHP ou peut-être Zend Framework. –

+0

Le problème que je trouve avec cet approcah est que je ne suis toujours pas capable de retourner ce code html comme json. J'ai pensé à utiliser quelque chose comme DomDocumentFragment pour charger le html dans une variable, mais ensuite je ne sais pas comment utiliser l'extrait() comme ça ... –

Questions connexes