模板

thinkphp

16-11-8 16:49:17

系统变量输出可以直接在模板中输出,系统变量的输出通常以{$Think 打头,例如:
{$Think.server.script_name} // 输出$_SERVER['SCRIPT_NAME']变量
{$Think.session.user_id} // 输出$_SESSION['user_id']变量
{$Think.get.pageNumber} // 输出$_GET['pageNumber']变量
{$Think.cookie.name}  // 输出$_COOKIE['name']变量

{$Think.const.MODULE_NAME} 常量

{$Think.config.db_charset}配置输出

{$Think.lang.page_error}语言变量

{:substr(strtoupper(md5($name)),0,3)} 运行函数

{$Think.get.name|default="名称为空"}   默认值输出

<include file="Public/header" />包含模板


{// 注释内容 }   模板注释

__ROOT__: 会替换成当前网站的地址(不含域名) 

__APP__: 会替换成当前应用的URL地址 (不含域名)
__MODULE__:会替换成当前模块的URL地址 (不含域名)
__CONTROLLER__(__或者__URL__ 兼容考虑): 会替换成当前控制器的URL地址(不含域名)
__ACTION__:会替换成当前操作的URL地址 (不含域名)
__SELF__: 会替换成当前的页面URL
__PUBLIC__:会被替换成当前网站的公共目录 通常是 /Public/


'TMPL_PARSE_STRING'  =>array(
     '__JS__'     => '/Public/JS/', // 增加新的JS类库路径替换规则
     '__UPLOAD__' => '/Uploads', // 增加新的上传路径替换规则
),
配置文件中定义常量


模板里的 url生成

 <volist name="list" id="vo"> <tr>
      <td>{$vo.number|sprintf="%04d",###}</td>
      <td><if condition="$vo.type ==1 ">顶级<else />普通</if></td>
      <td>{$vo.price}</td>
      <td><if condition="$vo.status ==1 ">售卖中<else />停售</if></td>
      <td>{$vo.remarks}</td>
     <td><a  href="{:U('card/edit', array('id' => $vo[id]))}"  >编辑</a></td>
    </tr>  </volist> 


./应用/模块/View/控制器/方法.html

  1. 'DEFAULT_V_LAYER' => 'Template',  //设置默认的视图层名称 ./应用/模块/Template/控制器/方法.html
  2. 'TMPL_TEMPLATE_SUFFIX'=>'.tpl'    //模板文件的默认后缀的情况是.html  

改变所有模块的模板文件目录

可以通过设置TMPL_PATH常量来改变所有模块的模板目录所在,例如:
define('TMPL_PATH','./Template/');
原来的./Application/Home/View/User/add.html变成了./Template/Home/User/add.html。


模板


  1. $this->assign('name',$value);
  2. // 下面的写法是等效的
  3. $this->name = $value;

$this->show();        同名方法

$this->show('list');   同目录

$this->show('index/page'); 控制器/模板


获取内容

$content = $this->fetch('Member:edit');


获取模板地址


获取页面地址的函数


U('Blog/cate',array('cate_id'=>1,'status'=>1)) 
U('Blog/cate','cate_id=1&status=1') 
U('Blog/cate?cate_id=1&status=1')



T([资源://][模块@][主题/][控制器/]操作,[视图分层])
T函数的返回值是一个完整的模板文件名,可以直接用于display和fetch方法进行渲染输出。例如:
  1. T('Public/menu');
  2. // 返回 当前模块/View/Public/menu.html
  3. T('blue/Public/menu');
  4. // 返回 当前模块/View/blue/Public/menu.html
  5. T('Public/menu','Tpl');
  6. // 返回 当前模块/Tpl/Public/menu.html
  7. T('Public/menu');
  8. // 如果TMPL_FILE_DEPR 为 _ 返回 当前模块/Tpl/Public_menu.html
  9. T('Public/menu');
  10. // 如果TMPL_TEMPLATE_SUFFIX 为.tpl 返回 当前模块/Tpl/Public/menu.tpl
  11. T('Admin@Public/menu');
  12. // 返回 Admin/View/Public/menu.html
  13. T('Extend://Admin@Public/menu');
  14. // 返回 Extend/Admin/View/Public/menu.html (Extend目录取决于AUTOLOAD_NAMESPACE中的配置)

在display方法中直接使用T函数:

  1. // 使用T函数输出模板
  2. $this->display(T('Admin@Public/menu'));