Как проверить сложное состояние в Smarty (PHP) - PullRequest
5 голосов
/ 03 июня 2010

Мне нужно отобразить тот или иной раздел в шаблоне smarty. Мое условие простое: если значение smarty начинается со строки, я должен отображать один раздел, в противном случае должен отображаться другой раздел smarty. Я могу изменить только файлы TPL.

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

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

Проблема в том, что я не могу прочитать переменную url, которая была ранее назначена с помощью $ smarty-> assign. По сути, я ищу умную функцию, которую можно использовать для получения значения, или если есть лучшее решение.

1 Ответ

5 голосов
/ 04 июня 2010

Сначала я бы почистил твой код. Вам не нужны php теги, вы используете smarty:

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

     section 1

 {else}
        section 2   
 {/if}

Это не проверено, но должно быть довольно близко ..

Теперь, если вы пытаетесь прочитать что-то вроде константы, например, серверную переменную, такую ​​как HTTP_HOST, вы можете сделать что-то вроде этого:

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

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

     section 1

 {else}
        section 2   
 {/if}
...