您的位置:首页 > 编程语言 > PHP开发

thinkphp学习笔记3

2009-08-12 22:11 246 查看
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语句就明了了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: