2010-06-03 4 views
5

J'ai besoin d'afficher une section ou une autre dans un template smarty. Ma condition est simple: si une valeur smarty commence par une chaîne, je devrais afficher une section, sinon l'autre section smarty devrait être affichée. Je ne peux changer que les fichiers tpl. Le problème est que je ne peux pas lire l'adresse URL qui a été assignée précédemment en utilisant $ smarty-> assign. Fondamentalement, je cherche la fonction smarty qui peut être utilisée pour récupérer une valeur, ou s'il y a une meilleure solution.Comment vérifier une condition complexe dans Smarty (PHP)

+1

Pourquoi ne pas lire la variable URL si elle a été affectée au modèle? – pws5068

Répondre

5

D'abord, je voudrais nettoyer votre code. Vous n'avez pas besoin balises php, vous utilisez Smarty:

{if substr($url,0,4) neq 'http'} 

    section 1 

{else} 
     section 2 
{/if} 

C'est non testé, mais il devrait être assez proche ..

Maintenant, si vous essayez de lire quelque chose comme une constante, pour par exemple une variable de serveur comme HTTP_HOST, vous pouvez faire quelque chose comme ceci:

{assign var='url' value=$smarty.server.HTTP_HOST} 

{if substr($url,0,4) neq 'http'} 

    section 1 

{else} 
     section 2 
{/if} 
+0

Je viens d'essayer mais ça ne marche pas. – adiian

+0

Cela ne marchera pas parce que php_self n'est pas la bonne variable serveur, je l'ai juste utilisé comme exemple. Vous pouvez essayer $ smarty.server.HTTP_HOST mais cela coupe probablement le http. Pour regarder les valeurs de vos variables de serveur télécharger une page avec juste pws5068

+0

il ne fonctionnait pas en raison d'un autre problème – adiian

Questions connexes