Smarty: как использовать функции PHP? - PullRequest
4 голосов
/ 21 января 2011

Скажем, у меня есть следующее в моем файле TPL:

{$a}

и я хочу применить некоторые собственные функции PHP (например, strip_tags) к этой переменной Smarty. Возможно ли это в рамках TPL? Если да, то как?

Ответы [ 6 ]

17 голосов
/ 21 января 2011

Вы можете использовать любую функцию php в шаблоне smarty следующим образом:

{$a|php_function_name}

или

{$a|php_function_name:param2:param3:...}

Во втором примере вы можете указать дополнительные параметры для функции php (в нашем случае первым всегда является $ a).

например: {$a|substr:4:3} должно получиться что-то вроде substr($_tpl_vars['a'],4,3);, когда smarty его скомпилирует.

6 голосов
/ 16 марта 2012

Очень хороший вопрос, мне потребовалось некоторое время, чтобы полностью разобраться в этом.

Вызов функции с передачей одного параметра:

{"this is my string"|strtoupper}
// same as:
strtoupper("this is my string")

{$a:strtoupper}
// same as:
strtoupper($a)

Вызов функции с передачей нескольких параметров

{"/"|str_replace:"-":"this is my string"}
// same as:
str_replace("/", "-", "this is my string")

{"/"|str_replace:"-":$a}
// same as:
str_replace("/", "-", $a)
5 голосов
/ 21 января 2011

Наилучшим способом, вероятно, является создание собственных плагинов и модификаторов для Smarty.В вашем конкретном примере Smarty уже имеет модификатор strip_tags .Используйте это так:

{$a|strip_tags}
3 голосов
/ 19 августа 2013

Или вы можете использовать это: (вызовите функцию напрямую)

{rand()}
0 голосов
/ 21 января 2011

В Smarty уже есть встроенный модификатор языка.

{$a|strip_tags}

Вам не нужны встроенные функции, поскольку они уже интегрированы в систему плагинов

http://www.smarty.net/docsv2/en/language.modifier.strip.tags.tpl

другие здесь:

http://www.smarty.net/docsv2/en/language.modifiers.tpl

0 голосов
/ 21 января 2011

Смысл шаблонных систем в том, чтобы абстрагировать создание представлений от базового языка.Другими словами, ваши переменные должны быть готовы к отображению до того, как они будут переданы в шаблонизатор, и вы не должны использовать какие-либо функции PHP в самом шаблоне.

...