{eval} используется для обработки переменной, как шаблона. Можно использовать для таких вещей, как хранение шаблонных тэгов/переменных в переменной или в файлах конфигруации.
Если указан специальный атрибут "assign", то вывод тэга eval присваивается переменной, вместо отображения.
Имя атрибута | Тип | Обязателен | По умолчанию | Описание |
---|---|---|---|---|
var | mixed | Да | n/a | Переменная (или строка) для обработки |
assign | string | Нет | n/a | Имя переменной, которой будет присвоен вывод |
Техническое Замечание
Переменные шаблоны обрабатываются так же, как и обычные шаблоны. Они подвластны тем же правилам и ограничениям безопасности.
Техническое Замечание
Переменные шаблоны компилируются при каждом вызове, скомпилированные версии не сохраняются! Однако, если кэширование включено, вывод будет кэширован вместе с остальной частью шаблона.
Пример 8.6. {eval}
#setup.conf #---------- emphstart = <strong> emphend = </strong> title = Welcome to {$company}'s home page! ErrorCity = You must supply a {#emphstart#}city{#emphend#}. ErrorState = You must supply a {#emphstart#}state{#emphend#}.
Шаблон:
{config_load file='setup.conf'} {eval var=$foo} {eval var=#title#} {eval var=#ErrorCity#} {eval var=#ErrorState# assign='state_error'} {$state_error}
Результат выполнения данного примера:
This is the contents of foo. Welcome to Foobar Pub & Grill's home page! You must supply a <strong>city</strong>. You must supply a <strong>state</strong>.
Пример 8.7. Другой пример использования {eval}
Отображает имя сервера (заглавными буквами) и IP-адрес. Переменная $str так же может быть результатом запроса к БД.
// php script $str = 'The server name is {$smarty.server.SERVER_NAME|upper} ' .'at {$smarty.server.SERVER_ADDR}'; $smarty->assign('foo',$str);
Шаблон:
{eval var=$foo}