zoukankan      html  css  js  c++  java
  • thinkphp学习笔记3

     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语句就明了了

  • 相关阅读:
    shell day01总结
    PythonDay02
    Python Day01
    802.11X
    IPsec
    Gre封装
    达梦数据库常见问题-命令行工具-主备集群监视器工具
    达梦数据库常见问题-命令行工具-初始化实例工具
    达梦数据库常见问题-命令行工具-快速装载工具
    达梦数据库常见问题-命令行工具-数据检查工具
  • 原文地址:https://www.cnblogs.com/zhangqifeng/p/1544743.html
Copyright © 2011-2022 走看看