2010-06-03 14 views
5

Devo visualizzare una sezione o un'altra in un modello smarty. La mia condizione è semplice: se un valore di smarty inizia con una stringa, dovrei visualizzare una sezione, altrimenti dovrebbe essere visualizzata l'altra sezione smarty. Posso cambiare solo i file tpl.Come verificare una condizione complessa in Smarty (PHP)

{php} 
    if (substr($url,0,4) != 'http') 
    { 
    {/php} 
        section 1 

    {php} 
    } 
    else 
    { 
    {/php} 
     section 2 
    {php} 
    } 
    {/php} 

Il problema è che non riesco a leggere l'url varible che è stato precedentemente assegnato utilizzando $ smarty-> assegna. Fondamentalmente, sto cercando la funzione smarty che può essere utilizzata per recuperare un valore o se esiste una soluzione migliore.

+1

Perché non si può leggere la variabile url se è stato assegnato al modello? – pws5068

risposta

5

Innanzitutto, pulisco il codice. Non hai bisogno di tag PHP, si sta utilizzando Smarty:

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

    section 1 

{else} 
     section 2 
{/if} 

Questo è testato ma dovrebbe essere abbastanza vicino ..

Ora, se si sta cercando di leggere qualcosa di simile a una costante, per esempio, una variabile del server come HTTP_HOST, si può fare qualcosa di simile:

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

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

    section 1 

{else} 
     section 2 
{/if} 
+0

Ho appena provato ma non funziona. – adiian

+0

Non funzionerà perché php_self non è la variabile del server corretta, l'ho usato solo come esempio. Potresti voler provare $ smarty.server.HTTP_HOST ma ciò probabilmente bloccherebbe l'http. Per vedere i valori delle variabili del tuo server, carica una pagina con solo pws5068

+0

non funzionava a causa di qualche altro problema – adiian

Problemi correlati