繁体   English   中英

Smarty:如何使用PHP函数?

[英]Smarty: how to use PHP functions?

假设我的TPL文件中包含以下内容:

{$a}

我想将某些PHP本机函数(例如strip_tags)应用于该Smarty变量。 这可能在TPL中吗? 如果是这样,怎么样?

您可以通过以下方式在智能模板中使用任何php函数:

{$a|php_function_name}

要么

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

在第二个例子中,您可以为php函数指定其他参数(在我们的例子中,第一个参数总是$ a)。

例如: {$a|substr:4:3}应该会产生类似substr($_tpl_vars['a'],4,3); 当smarty编译它时。

非常好的问题,我花了一段时间才完全弄明白这一点。

调用一个函数,传递一个参数:

{"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)

最好的方法可能是为Smarty创建自己的插件和修饰符 对于您的具体示例,Smarty已经有一个strip_tags修饰符 像这样使用它:

{$a|strip_tags}

或者你可以使用这个:(直接调用函数)

{rand()}

模板系统的重点是从底层语言中抽象出视图的创建。 换句话说,您的变量应该在传递给模板引擎之前准备好显示,并且您不应该在模板本身中使用任何PHP函数。

Smarty已经内置了语言修饰符。

{$a|strip_tags}

您不需要Native功能,因为已经集成到插件系统中

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

其他人:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM