2017-10-09 3 views
-1

Dans l'application que nous développons, le contenu HTML est écrit dans une chaîne perl qui est renvoyée ultérieurement. Il y a un cas où nous aurions besoin d'afficher une certaine partie du code HTML en fonction du résultat d'une condition. Depuis, HTML est seulement un balisage, d'après ce que je comprends, ce n'est pas possible. Existe-t-il un moyen de contourner cela en utilisant Perl ou autre chose? (En dehors de la création de 2 modèles différents)Affichage du contenu HTML basé sur une condition

Merci!

+0

Vous pourriez vouloir [regarder cette discussion] (https://www.youtube.com/watch?v= jKOqtRMT85s). – simbabque

Répondre

2

Vous pouvez mettre différentes choses dans une chaîne basée sur une instruction if assez facilement.

my $thing_to_insert = ""; 
if (condition()) { 
    $thing_to_insert = '<div>...</div>'; 
} else { 
    $thing_to_insert = '<p>...</p>'; 
} 
my $html = "<div>$thing_to_insert</div>"; 
return $html; 

Utilisez un langage de modèle (tels que Template Toolkit ou texte :: Xslate) serait généralement un meilleur pari que.

+1

Cela me fait mal aux yeux. : D – simbabque

+0

J'ai un grand HTML comme une chaîne et disons qu'un bouton doit être montré en fonction de la décision. Le reste doit être identique. Comment puis-je ajouter une chaîne perl entre un code HTML. Cela ressemble à ceci: . . . ..... . . – raita

+0

@raita - J'ai donné un exemple dans la réponse. – Quentin

1

Vous devez décider de ce que vous souhaitez afficher lorsque vous construisez la chaîne HTML.

En termes de base, votre code ressemblera à ceci:

my $html = '<html><head>... [lots of HTML]'; 

if ($we_want_to_show_the_button) { 
    $html .= '<button> ... [button html] ... </button>'; 
} 

$html .= '[lots more HTML] ... </body></html>'; 

Je dois souligner, cependant, que nous avons connu depuis vingt ans que la génération HTML par concaténation des chaînes dans votre code Perl est une très mauvaise idée . Une approche beaucoup mieux consiste à mettre tout votre HTML dans un modèle - avec une certaine logique sur l'affichage de divers bits si diverses conditions sont vraies.

Si vous utilisez le modèle Tooikit, qui pourrait ressembler à ceci:

<html> 
    <head>...</head> 
    <body> 
    ... lots of HTML omitted ... 
[% IF we_want_to_show_the_button -%] 
    <button> ... </button> 
[% END -%] 
    ... lots more HTML ... 
    </body> 
</html>