1.验证码产生
  在ThinkPhp中有个Image.class可直接使用生成验证码 而且可选性多
  在ThinkPHP/Lib/ORG/Util/Image.class可直接查看源代码
  例如我用到的验证码
  该方法就是生成一个验证码  该方法返回的是二进制的输出流
 public function  verify()
 {
  import("ORG.Util.Image");//该类还有很多静态方法 产生“品种”较多的验证码  这只是其中一种
   Image::buildImageVerify();
 }
  2.Action
               在接受客户端提交过来的数据时候 一般要进行一定得数据校验
           在用到$this->error($msg);时  默认它会转发到Public下的success.html模版页面,所以要预先建立此页面  在页面模版中可用{$error}显示错误信息 

  3.条件标签
               例如 
                <if condition="$reply.sex eq 1 "> //$reply是个对象
                 男
     <elseif condition="$name eq 2" />人妖
               <else/>女
               </if>     
      值是跟着结束之后  个人感觉不怎么美观。
      注:condition属性的条件表达式都不支持 符号  如">"  "<"  "=="  等符号  且属性里面基本上使用的是php语法
      官方中还让我们推荐用Switch替换
      
  4.Switch标签
              <switch  name="reply.sex">
                  <case value="1">男</case>
                  <case value="0">女</case>
                  <default/>aaaa
                 </switch>
      name可以调用系统函数和系统变量   value也可以用变量  如<case value="$sex">
      
  5.{/* 注释内容 */ } 或 {// 注释内容 }   模版注释
   
  6.导入文件
   <html:import type='js' file="Js.Util.Array" />  import标签 用以导入网站的公共JS或者CSS  type可以不写默认是JS
    <html:link href="../Public/Js/Common.js" />
   
    7.迭代标签
     如:我在项目中用到的volist标签   迭代一个用户列表
<volist id="reply" name="replyList">
  <table style="height: 80px">
          <tr>
    <td>用户:</td><td>{$reply.uname}</td>
    </tr>
          <tr>
    <td>性别</td>
          <td>
           <switch  name="reply.sex">
           <case value="1">男</case>
           <case value="0">女</case>
           <default/>保密
           </switch>
           </td>
         </tr>
        <tr><td>注册日期</td>
  <td>{$reply.uregtime}</td>
  </tr>
        </table>
</volist>
        
以下例子摘之官方手册  
注意name和id表示的含义

// 输出list的第5~15条记录

<iterate name="list" id="vo" offset="5" length='10'>

{$vo.name}

</iterate>

// 输出偶数记录

<iterate name="list" id="vo" mod="2" >

<eq name="mod" value="1">

{$vo.name}

</eq>

</iterate>

// 输出key

<iterate name="list" id="vo" key="k" >

{$k}.{$vo.name}

</iterate>

iterate还有其它的别名,包括volist,resultset,sublist

子循环输出

<volist name="list" id="vo">

<sublist name="vo['sub']" id="sub">

{$sub.name}

</sublist>

</volist>

很能让人理解的模版标签

 9.视图查询
  就是多表连接    以自己练手的项目为例
 
  如上reply对象 映射的是表reply 即回帖表   其引用用户表UserInfo的UID 
  建立一个ViewModel子类
  class ReplyViewModel extends ViewModel {

 protected  $viewFields=array(
 'reply'=>array('content','publishTime','_as'=>'r','_type'=>'left'),
 'userInfo'=>array('uname','head','sex','uregtime','_as'=>'u',
 '_on'=>'r.uid=u.uid'
 )
 );
 //viewFields   两表连接后所需要的字段
 /**
 *
 *protected $viewFields = array(
        '表名'=>array('所需字段','_as'=>'别名定义','_on'=>'筛选条件',
         '_type'=>'指定join类型,支持right,inner,left三种'),

         );
 *
 */
 }
 
 如上  直接在Action 中
                     $replyViewDAO=D('ReplyView'); 就可以进行操作
                       $replyList=$replyViewDAO->select();//获得列表
                     dump($replyViewDAO->getLastSql());//看看SQL语句就明了了

posted on 2009-08-12 22:11  冷傲残痕  阅读(1210)  评论(0编辑  收藏  举报