ThinkPHP视图

来源:互联网 发布:xlsx密码破解软件 编辑:程序博客网 时间:2024/05/22 14:30
视图目录/[模板主题/]控制器名/操作名+模板后缀

设置默认视图层不是View:
    'DEFAULT_V_LAYER' => 'Template', // 设置默认的视图层名称
模板文件的默认后缀的情况是.html,也可以通过 TMPL_TEMPLATE_SUFFIX 来配置成其他的。
        'TMPL_TEMPLATE_SUFFIX'=>'.tpl'
如果觉得目录结构太深,可以通过设置 TMPL_FILE_DEPR 参数来配置简化模板的目录层次
        'TMPL_FILE_DEPR'=>'_'
模块的配置文件中单独定义视图目录:
        'VIEW_PATH'=>'./Theme/'

模板赋值

$this->assign('name',$value); // assign方法赋值给模板

//赋值后,就可以在模板文件中输出变量了,如果使用的是内置模板的话,就可以这样输出: {$name}


模板渲染

display('[模板文件]'[,'字符编码'][,'输出类型'])

调用模板主题功能:$this->theme('blue')->display('User:edit');

获取模板地址

T([资源://][模块@][主题/][控制器/]操作,[视图分层])

T函数的返回值是一个完整的模板文件名,可以直接用于display和fetch方法进行渲染输出。

Eg:
  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'));//T函数可以输出不同的视图分层模板

获取内容

 ------- 需要获取渲染模板的输出内容而不是直接输出
fetch('模板文件' );
  *** fetch() 和 display() 的区别 fetch方法渲染后不是直接输出,而是返回渲染后的内容,

渲染内容

show( '渲染内容'[,'字符编码'][,'输出类型'] );
$this->show($content, 'utf-8', 'text/xml');

模板引擎:
只需要设置TMPL_ENGINE_TYPE参数为相关的模板引擎名称即可:
 eg:  'TMPL_ENGINE_TYPE' =>'PHP'

模板变量:
普通变量:
   配置变量标签起始标记:
        'TMPL_L_DELIM'=>'<{',
        'TMPL_R_DELIM'=>'}>',
    {$var}    //注意模板标签的{$之间不能有任何的空格,否则标签无效。
    
系统变量:
    常量:{$Think.MODULE_NAME}
    配置:{$Think.config.db_charset}  {$Think.config.url_model}
    语言:{$Think.lang.page_error}    {$Think.lang.var_error}

模板函数:( 函数过滤 )
   md5 : {$data[ 'name' ]|md5}
   date:{$data['time']|date="y-m-d",###}
   substr:{$data['conmtent']|substr=0,3}
 ****** 支持多个函数过滤 用 | 分割开来
{$name|md5|strtoupper|substr=0,3} 或者{:substr(strtoupper(md5($name)),0,3)}
默认输出值: 采用 default = "" 来设置。

三元运算:
{$status?'正常':'错误'}
{$info['status']?$info['msg']:$info['error']}


模板内置标签:

Volist标签:通常用于查询数据集(select方法)的结果输出,通常模型的select方法返回的结果是一个二维数组,可以直接使用volist标签进行输出。
<volist name="list" id="vo"></volist>
name属性表示模板赋值的变量名称,id表示当前的循环变量,可以随意指定
输出查询结果中的部分数据,例如输出其中的第5~15条记录:
    <volist name="list" id="vo" offset="5" length='10'>
        {$vo.name}
    </volist>

输出偶数记录:

    <volist name="list" id="vo" mod="2" >
        <eq name="mod" value="1">{$vo.name}</eq>
    </volist>
Mod属性还用于控制一定记录的换行:
    <volist name="list" id="vo" mod="5" >
        {$vo.name}
        <eq name="mod" value="4"><br/></eq>
     </volist>
空的时候输出提示:
    <volist name="list" id="vo" empty="暂时没有数据" >
        {$vo.id}|{$vo.name}
     </volist>
要输出数组的索引,可以直接使用key变量:( 和循环变量不同的是,这个key是由数据本身决定,而不是循环控制的 )
    <volist name="list" id="vo" >
        {$key}.{$vo.name}
    </volist>

Foreach标签:name表示数据源 item表示循环变量。
    <foreach name="list" item="vo" ></foreach>
定义索引的变量名:
    <foreach name="list" item="vo" key="k" >
        {$k}|{$vo.id}:{$vo.name}
    </foreach>

For标签:
<for start="开始值" end="结束值" comparison="" step="步进值" name="循环变量名" ></for>
开始值、结束值、步进值和循环变量都可以支持变量,开始值和结束值是必须,其他是可选。comparison 的默认值是lt;;name的默认值是i,步进值的默认值是1

IF标签:
    <if condition="($name eq 1) OR ($name gt 100) "> value1
    <elseif condition="$name eq 2"/>value2
    <else /> value3
    </if>
    1在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析
    2 condition属性里面使用php代码

Switch标签:
    <switch name="变量" >
    <case value="值1" break="0或1">输出内容1</case>
    <case value="值2">输出内容2</case>
    <default />默认情况
    </switch>
1 name属性可以使用函数以及系统变量
2 case的value属性可以支持多个条件的判断,使用”|”进行分割
3 case的value属性使用变量
0 0
原创粉丝点击