总结ThinkPHP使用技巧经验分享(二)

循环输出
volist 还有别名 iterate

模版赋值:
$User = D(‘User‘)
$list = $User->findAll()
$this->assign(‘list‘,$list)

模版定义:
< iterate name="list" id="vo">
{$vo.name}
< /iterate>

注意 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>

//子循环输出
<volist name="list" id="vo">
< iterate name="vo[‘sub‘]" id="sub">
{$sub.name}
< /iterate>
< /volist>

Switch 标签
<switch name="name">
< case value="1">value1</case>
< case value="2">value2</case>
< default />default
< /switch>
其 中 name 属性可以使用函数以及系统变量,例如:
<switch name="Think.get.userId|abs">
< case value="1">admin</case>
< default />default
< /switch>
也 可以对 case 的 value 属性使用变量,例如:
<switch name="userId">
< case value="$adminId">admin</case>
< case value="$memberId">member</case>
< default />default
< /switch>

比较标签
<eq name="name" value="value">value</eq> // name 变量的值等于 value 就输出
<neq name="name" value="value">value</neq> // name 变量的值不等于 value 就输出
<gt name="name" value="5">value</gt> // name 变量的值大于 5 就输出
<egt name="name" value="5">value</egt> // name 变量的值大于等于 5 就输出
<lt name="name" value="5">value</lt> // name 变量的值小于 5 就输出
<elt name="name" value="5">value</elt> // name 变量的值小于等于 5 就输出

//其实上面的所有标签都是 compare 标签的别名
// 其中 type 属性的值就是上面列出的判断标签名称
<compare name="name" value="5" type="eq">value</compare> // name 变量的值等于 5 就输出

If标签
<if condition="$name eq 1 "> value1
< elseif condition="$name eq 2" />value2
< else /> value3
< /if>

C操作
操作(动态)配置: 主要用于Action方法里面
获取:
C(‘配置参数‘)
设置:
C(‘配置参数 ‘,新值)

A操作
快速创建Action对象:
$action = A(‘User‘);
等效于
$action = new UserAction();

D操作
快速创建模型数据对象:
$model = D(‘User‘);
等效于
$model = new UserModel();

S操作
快速操作缓存方法
获取:
S(‘name‘)
设置:
S(‘name‘,‘value‘);
删 除:
S(‘name‘,NULL);

F操作
快速文件数据保存方法
使用方法与S操作一样

L操作
快速操作语言变量
获取:
L(‘语言变量‘);
设置:
L(‘语言变量‘,‘值‘);
如: L(‘USER_INFO‘,‘用户信息‘); //设置名称为USER_INFO的语言变量
批量赋值:
$arr[‘语言变量1‘] = ‘值1‘;
$arr[‘语言变量2‘] = ‘值2‘;
L($arr);

ThinkPHP系统常量

THINK_PATH   // ThinkPHP 系统目录
APP_PATH   // 当前项目目录
APP_NAME   // 当前项目名称
MODULE_NAME   //当前模块名称
ACTION_NAME   // 当前操作名称
TMPL_PATH   // 项目模版目录
LIB_PATH   // 项目类库目录
CACHE_PATH   // 项目模版缓存目录

CONFIG_PATH   //项目配置文件目录
LOG_PATH   // 项目日志文件目录
LANG_PATH   // 项目语言文件目录
TEMP_PATH   //项目临时文件目录
PLUGIN_PATH   // 项目插件文件目录
VENDOR_PATH   // 第三方类库目录
DATA_PATH   // 项目数据文件目录
IS_APACHE   // 是否属于 Apache
IS_IIS    //是否属于 IIS
IS_WIN    //是否属于Windows 环境
IS_LINUX   //是否属于 Linux 环境
IS_FREEBSD   //是否属于 FreeBsd 环境
NOW_TIME   // 当前时间戳
MEMORY_LIMIT_ON // 是否有内存使用限制

MEMORY_LIMIT_ON // 是否有内存使用限制
OUTPUT_GZIP_ON   // 是否开启输出压缩
MAGIC_QUOTES_GPC // MAGIC_QUOTES_GPC
THINK_VERSION   //ThinkPHP 版本号
LANG_SET   // 浏览器语言
TEMPLATE_NAME   //当前模版名称
TEMPLATE_PATH   //当前模版路径
__ROOT__   // 网站根目录地址
__APP__   // 当前项目(入口文件)地址
__URL__   // 当前模块地址
__ACTION__   // 当前操作地址
__SELF__   // 当前 URL 地址
TMPL_FILE_NAME   //当前操作的默认模版名(含路径)
WEB_PUBLIC_URL   //网站公共目录
APP_PUBLIC_URL   //项目公共模版目录

预定义常量
WEB_LOG_ERROR=0     // 错误日志类型
WEB_LOG_DEBUG=1 // 调试日志类型
SQL_LOG_DEBUG=2   // SQL 日志类型
SYSTEM_LOG=0   // 系统方式记录日志
MAIL_LOG=1   // 邮件方式记录日志
TCP_LOG=2   // TCP 方式记录日志
FILE_LOG=3   // 文件方式记录日志
DATA_TYPE_OBJ=1 // 对象方式返回
DATA_TYPE_ARRAY=0 // 数组方式返回
URL_COMMON=0   // 普通模式 URL
URL_PATHINFO=1   // PATHINFO URL
URL_REWRITE=2   // REWRITE URL
HAS_ONE=1   // HAS_ONE 关联定义
BELONGS_TO=2   // BELONGS_TO 关联定义
HAS_MANY=3   // HAS_MANY 关联定义
MANY_TO_MANY=4   // MANY_TO_MANY 关联定义
EXISTS_VAILIDATE = 0 // 表单存在字段则验证
MUST_VALIDATE = 1 // 必须验证
VALUE_VAILIDATE = 2 // 表单值不为空则验证

时间: 2024-10-10 02:12:42

总结ThinkPHP使用技巧经验分享(二)的相关文章

总结ThinkPHP使用技巧经验分享(二)

循环输出volist 还有别名 iterate 模版赋值:$User = D('User')$list = $User->findAll()$this->assign('list',$list) 模版定义:<iterate name="list" id="vo">{$vo.name}</iterate> 注意 name 和 id 表示的含义// 输出 list 的第 5-15 条记录<iterate name="l

thinkphp开发技巧经验分享

thinkphp开发技巧经验分享 www.111cn.net 编辑:flyfox 来源:转载 这里我给大家总结一个朋友学习thinkphp时的一些笔记了,从变量到内置模板引擎及系统变量等等的笔记了,同时还有一些开发中碰到的问题的解决方案下面我们一起来看看吧. 一,常用的系统变量 (1)系统变量:在模板中输出系统变量:包括server.env.session.post.get.request.cookie {$Think.server.script_name} // 输出$_SERVER变量 {$

总结ThinkPHP使用技巧经验分享(一)

找了一些使用THinkPHP的心得和技巧,分享给大家 约定:1.所有类库文件必须使用.class.php作为文件后缀,并且类名和文件名保持一致2.控制器的类名以Action为后 缀3.模型的类名以Model为后缀,类名第一个字母须大写4.数据库表名全部采用小写, 如:数据表名: 前缀_表名模型类名: 表名Model 注:这里的表名第一个字母要大写创建对象: D('表名') 注:这里的表名第一个字母要大写 定义控制器类class IndexAction extends Action{public

总结ThinkPHP使用技巧经验分享(四)

ThinkPHP的CURD易忽视点小结1.不定义方法,直接渲染模板. 对于没有任何实际逻辑的操作方法,我们只需要直接定义对应的模板文件就行了,比如表单页面,这个页面一般不会有变量向模板中输出,所以,我们没有必要再去写一个对应的空方法然后$this->display()了.2.简介create方法. 假设我们实例化的模型为$model,那么ThinkPHP可以直接通过$model->add()的方式向数据库中添加数据,那么如果我们在$model->add()之前调用$model->c

总结ThinkPHP使用技巧经验分享(三)

add方法返回主键(id)的值在往数据表中添加数据时调用add方法,默认返回值就是刚添加的id值,就不用再去查询了. save方法返回值的判断在修改数据时,如果修改成功返回的是被修改的记录数0,1,2,3......注意:以下几种情况返回 false,所以判断更新失败应使用 if(false === $this->save())(1)更新的数据为空(2)_before_update()方法返回false(3)没有任何更新条件(没有定义where()里的条件,或者保存的数据里没有主键的值) 查询后

暑期报修项目经验分享二(附原码)

楔子 第二期项目经验分享,其实整个项目流程,我们只是参与了其中一小部分,仅仅是添加了材料管理模块的内容,在第一期的实践里面,主要维护材料类别的增查改操作.二期维护做的是材料出入库处理,因为我处理的是入库管理这一块,所以分享下做这一块的经验. 需求分析: 在分析业务需求的时候,因为考虑到出入库在一张数据表里面,即是共用数据,那么type区分出入库,在写代码的时候一个反人类的操作就是把流水号设置成整形,虽然影响不大,另外关于材料类别代码这里,因为材料类别是三级联动设置,所以我们只取最后一级的代码,因

总结16种网站渗透技巧经验分享

1.利用网站过滤不严直接绕过后台验证,在网站后面加上 admin/session.asp 或 admin/left.asp 2.有的网站进后台会出现一个脚本提示框,输入:administrator 即可突破!因为admin代表以管理员身份进入的意思. 3.有的网站开了3389,入侵之前先去连接3389,尝试弱口令或是爆破,再者就是按5次shift键,看看有没前人装过后门,然后再社工密码. 4.有时候进后台会弹出提示框“请登陆”,把地址抄写出来(复制不了),然后放在网页源代码分析器里,选择浏览器-

ThinkPHP使用技巧经验总结

add方法返回主键(id)的值 在往数据表中添加数据时调用add方法,默认返回值就是刚添加的id值,就不用再去查询了. save方法返回值的判断 在修改数据时,如果修改成功返回的是1,不成功则是0,如果没用做任何的修改就保存了,那么返回值还是0. 打印sql语句 $User = D('User'); $User->select(); echo $User->getLastSql();或者echo $User->_sql(); 获取最后执行的sql语句,方便查看调试 跨模板主题调用模板 假

用户界面设计经验分享:界面设计技巧分享

如此有用的文章我已记不得是什么时候发现的了,但在看完的那一刻便想将之翻译,分享给大家自己也受用. 时间过了很久,来到了2014年,终于静下心来花了大把时间连同图片一起译成了中文.像我这样业余的翻译六级分数只够及格的程序员,不敢说做到信雅达,但求意思到位. 1 尽量使用单列而不是多列布局 单列布局能够让对全局有更好的掌控.同时用户也可以一目了然内容.而多列而已则会有分散用户注意力的风险使你的主旨无法很好表达.最好的做法是用一个有逻辑的叙述来引导用户并且在文末给出你的操作按钮. 2 放出礼品往往更具