CentOS环境下ThinkPHP模板引擎使用技巧
ThinkPHP模板文件默认存放在/application/view/目录下,命名规则与控制器、操作方法严格对应(如HomeController@index对应home/index.html)。在CentOS系统中,需确保该目录及子目录具备正确的读写权限(建议设置为755),避免因权限问题导致模板无法加载。
assign()方法将数据传递给模板,如$this->assign('title', '首页'),模板中直接使用{$title}输出。{$arr[0]})或键名({$arr.key})访问;对象通过成员属性({$obj.property})或方法({$obj.method()})输出。|default过滤器为变量设置默认值,如{$username|default="游客"},避免变量未定义时报错。view/layouts/目录下创建基础布局(如main.html),使用{__CONTENT__}占位符接收子模板内容。{extend name="layouts/main" /}继承布局,用{block name="content"}定义可覆盖的区块,如:{extend name="layouts/main" /}
{block name="content"}
  <h1>{$title}</h1>
  <p>{$content}</p>
{/block}
此方式可减少公共部分(如头部、尾部)的重复代码。{if}标签实现逻辑分支,如:{if $user}
  <p>欢迎,{$user.name}</p>
{else}
  <p>请登录</p>
{/if}
{foreach}标签遍历数组,如:<ul>
  {foreach $list as $item}
    <li>{$item.id}:{$item.name}</li>
  {/foreach}
</ul>
支持$key=>$value形式获取键值对,满足复杂数据结构的渲染需求。{$Think.get.id}获取GET参数(如id=1则输出1),同理支持{$Think.post.name}(POST参数)、{$Think.cookie.user}(Cookie)等。|符号调用函数处理变量,如{$content|htmlspecialchars}防止XSS攻击,{$time|date="Y-m-d",###}格式化时间戳。通过{include}标签引入公共模板,支持变量传递和多文件包含:
{include file="Public/header" /}(引入当前模块下的Public/header.html)。{include file="Admin@Public/header" /}(引入Admin模块的Public/header.html)。{include file="header" title="子页面标题" keywords="关键词" /}(向包含的模板传递变量)。config/view.php中设置'cache' => true,并指定缓存目录(如'cache_path' => './runtime/temp/'),提升模板渲染性能。'tpl_cache' => false,避免模板修改后需手动清除缓存。\think\facade\Cache::clear()清除所有缓存,或在runtime/temp/目录下手动删除编译后的模板文件。通过继承think\Template类并注册标签库,实现高级自定义功能(如生成二维码、调用第三方API):
application/common.php中定义标签方法,如:function formatDate($timestamp) {
  return date('Y-m-d H:i:s', $timestamp);
}
{formatDate($item.create_time)},直接输出格式化后的时间。<?=短标签,需在/etc/php.ini中设置short_open_tag=On,并重启Apache/Nginx服务。/application/view/、runtime/等目录可被Web服务器用户(如apache、nginx)访问,避免403 Forbidden错误。