2010-08-10 27 views
3

Je veux garder mes modèles bien rangés et bien intentionnés, mais je voudrais seulement livrer du HTML très compact au navigateur.
A défaut d'une meilleure idée, je me demandais s'il y avait quelque chose de mal à emballer des modèles entiers Smarty dans {strip} comme ça? Ça sent un peu peu professionnel pour moi, mais je ne pouvais pas trouver quelque chose de mieux.
Un inconvénient est certainement que vous devez envelopper chacun de vos modèles dans ces balises. Je suis heureux d'être corrigé et j'aimerais entendre différentes approches pour garder le code livré compact.Quelque chose ne va pas avec l'emballage de modèles Smarty entiers dans les balises {strip}?

Répondre

1

Non, il n'y a rien de mal à cela.

Faites-le dans une paire de modèles d'en-tête/pied de page, plutôt que d'envelopper chaque page individuellement.

Alternativement, vous pourriez déclencher l'effacement du côté PHP des choses.

+0

Merci pour votre réponse. La chose en-tête/pied de page ne fonctionne pas, cependant. J'affiche ces modèles séparément afin que le début-'{strip}' de 'head.tpl' ne soit plus compilé dans' index.tpl' (ou ai-je tort)? $ smarty-> display ('_inc/tpl.head.tpl'); $ smarty-> display ('index.tpl'); $ smarty-> display ('_inc/tpl.foot.tpl'); – WrongAboutMostThings

+0

@Matze: Non, vous avez raison, si elles sont dans des modèles distincts, affichés séparément, '{strip}' ne fonctionnera pas. Vous pouvez glom les modèles ensemble avant l'affichage, cependant, et alors il le fera. – Borealid

+0

Merci pour la réponse; tu as raison. Cependant, comment j'appellerais 'strip 'de Smaty du côté PHP? (J'utilise le cadre Slim avec ça). –

1

Avis: Striptags ignorera comprend. Astuce gratuite de la journée. :-)

5

Alors que ce n'est pas faux, je suggère d'utiliser un préfiltre à la place. Un préfiltre ne s'exécute que lorsque le modèle est en cours de compilation (donc il ne ralentit pas le serveur) et vous n'avez pas besoin d'envelopper chaque modèle dans {strip}. Les lignes de code suivantes proviennent d'un projet sur lequel je travaille. Il supprime effectivement la plupart des espaces.

/* Minify the html */ 
function smarty_pre_minify($tpl_source, $smarty) { return preg_replace('/[ \t\n\r]+/s', ' ', $tpl_source); } 
$smarty->registerFilter('pre', 'smarty_pre_minify'); 
+1

Celui-ci devrait être marqué comme la bonne réponse – MatteoSp

+0

donc ce n'est pas correct d'envelopper tout avec '{strip}'? –