이 글에서는 주로 PHP 템플릿 엔진 Smarty의 내장 함수 사용법을 소개합니다. smarty에 포함된 일반적인 내장 함수의 기능, 정의 및 사용법을 예제와 함께 분석합니다. 기능: Smarty 일부 내장 기능이 함께 제공됩니다. 내장 기능은 템플릿 언어의 일부입니다. 사용자는 내장 기능과 동일한 이름을 가진 사용자 정의 기능을 만들거나 내장 기능을 수정할 수 없습니다.
Smarty에 내장된 기능은 아래에 설명되어 있으며 예제가 제공됩니다.
예제에 사용된 Smarty 템플릿 엔진 초기화 파일 init.inc.php 및 기본 파일 index.php
init.inc.php
<?php define('ROOT_PATH', dirname(__FILE__)); //设置网站根目录 require ROOT_PATH.'/libs/Smarty.class.php'; //加载 Smarty 模板引擎 $_tpl = new Smarty(); //创建一个实例对象 $_tpl->template_dir = ROOT_PATH.'/tpl/'; //重新指定模板目录 $_tpl->compile_dir = ROOT_PATH.'./com/'; //重新指定编译目录 $_tpl->left_delimiter = '<{'; //重新指定左定界符 $_tpl->right_delimiter = '}>'; //重新指定右定界符 ?>
index.php
<?php require 'init.inc.php'; //引入模板初始化文件 global $_tpl; $_tpl->display('index.tpl'); //引入模板 ?>
1
기본값Description
no | default | 데이터 수집 영역 이름 | ||
---|---|---|---|---|
string | No | n/a | 변수명[테스트 대상]||
/tpl/index.tpl | 에 할당된 데이터 수집 영역은 어디입니까? | 2, config_load |
필수인가요?기본값
Description
예 | n/ a | 포함할 구성 파일 이름 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
string | No | n/ a | 구성 파일에 로드할 부분의 이름|||||||||||||||||||||||||||||||||||||||||||||||||||||||
string | no | local | 로드된 데이터의 범위, 값은 로컬, 상위 또는 전역이어야 함을 나타냅니다. 이 변수의 범위는 현재 상위 템플릿임을 나타냅니다. 이 변수의 범위는 현재 템플릿과 현재 템플릿(현재 템플릿을 호출하는 템플릿)의 상위 템플릿입니다. global 이 변수의 범위가 모든 템플릿임을 나타냅니다.|||||||||||||||||||||||||||||||||||||||||||||||||||||||
boolean | No | No | 은 로드된 변수가 전역적으로 표시되는지 여부를 나타냅니다(scope=parent와 동일). 참고: 범위 속성이 지정되면 이 속성을 설정할 수 있지만 템플릿은 속성 값과 대상을 무시합니다. 범위 속성.|||||||||||||||||||||||||||||||||||||||||||||||||||||||
属性 | 类型 | 是否必须 | 缺省值 | 描述 |
---|---|---|---|---|
file | string | Yes | n/a | 待包含的模板文件名 |
assign | string | No | n/a | 该属性指定一个变量保存待包含模板的输出 |
[var ...] | [var type] | No | n/a | 传递给待包含模板的本地参数,只在待包含模板中有效 |
include 函数用于在当前模板中包含其它模板, 当前模板中的变量在被包含的模板中可用. 必须指定 file 属性,该属性指明模板资源的位置。如果设置了 assign 属性,该属性对应的变量名用于保存待包含模板的输出,这样待包含模板的输出就不会直接显示了。请看下面的示例:
/tpl/index.tpl
{include file="header.tpl"} {* body of template goes here *} {include file="footer.tpl"}
4、if,elseif,else
Smarty 中的 if 语句和 php 中的 if 语句一样灵活易用,并增加了几个特性以适宜模板引擎. if 必须于 /if 成对出现. 可以使用 else 和 elseif 子句。
可以使用以下条件修饰词:eq、ne、neq、gt、lt、lte、le、gte、ge、is even、is odd、is not even、is not odd、not、mod、p by、even by、odd by、==、!=、>、d2714fbb0e49a95306c2048bc19e4f2b=. 使用这些修饰词时必须和变量或常量用空格格开。
下面对这些修饰符表示的意思进行说明:
条件修饰符 | 作用描述 |
eq | == |
ne | != |
neq | != |
gt | > |
lt | ff7ec474ecc2ec105b900d573d35826d= |
ge | >= |
is even | 是否偶数 |
is odd | 是否奇数 |
is not even | 是否不是偶数 |
is not odd | 是否不是奇数 |
not | != |
mod | 求模 |
p by | 是否能被整除 |
even by | 商是否是偶数 |
odd by | 商是否是奇数 |
&& | 与 |
|| | 或 |
() | 括号改变优先级 |
5、ldelim 和 rdelim
用于输出分隔符,也就是大括号 "{" 和 "}". 模板引擎总是尝试解释大括号内的内容,因此如果需要输出大括号,请使用此方法。请看下面的示例:
/tpl/index.tpl
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ldelim 和 rdelim</title> </head> <body> <{ldelim}>funcname<{rdelim}> 是 Smarty 中的一个函数。 <!-- 执行结果: <{funcname}> 是 Smarty 中的一个函数。 --> </body> </html>
6、literal
literal 标签区域内的数据将被当作文本处理,此时模板将忽略其内部的所有字符信息. 该特性用于显示有可能包含大括号等字符信息的 javascript 脚本. 当这些信息处于 {literal}{/literal} 标签中时,模板引擎将不分析它们,而直接显示,其实按照我的所有例子中的标签风格(因为在 init.inc.php 初始化文件中已经重新设置了左定界符和右定界符),而不是 Smarty 的默认风格,基本上不会产生这种情况。关于该函数的使用,请看下面的示例
/tpl/index.tpl
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>literal</title> </head> <body> <{literal}> <script language=javascript> <!-- window.alert(new Date()); --> </script> <{/literal}> </body> </html>
7、php
php 标签允许在模板中直接嵌入 php 脚本,此标签会把标签内部的内容当成 PHP 脚本进行解析执行。请看下面的示例
/tpl/index.tpl
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>php</title> </head> <body> <{php}> echo date("Y-m-d H:i:s"); <{/php}> <!-- 执行结果: 2011-10-24 04:35:03 --> </body> </html>
8、strip
Web 开发者多次遇到空格和回车影响HTML输出的情形,为了得到特定的结果,因此你不得不在模板里运行所有的标签. 通常在难以理解或难以处理的模板中遇到此问题。Smarty 在显示前将除区任何位于 {strip}{/strip} 标记中数据的首尾空格和回车. 这样可以保证模板容易理解且不用担心多余的空格导致问题。
好了, Smarty 模板引擎中的内建函数先总结这么多,关于内建函数中两个最重要的函数(foreach,foreachelse、section,sectionelse)的使用,可参考前面一篇《PHP模板引擎Smarty内建函数foreach,foreachelse用法分析》
总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。
相关推荐:
위 내용은 PHP 템플릿 엔진 Smarty의 내장 기능에 대한 자세한 사용법과 예제 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!