thinkphp3.2 手册目录:http://www.kancloud.cn/manual/thinkphp/1678

http://www.aichengxu.com/view/39961

一、页面跳转

1.URL模式用来定向请求到模块、控制器和操作,如pathInfo模式:http://localhost/index.php/home/user/login/var/value/ 方法不存在,则为模版

2.页面跳转$this->success(“新增成功”,’/user/index’);

$this->success("添加成功",U('office/index'));跳转方法

3.页面重定向$this->redirect("office/index");跳转方法

4.显示模版$this->display("/office/officeJudge");

$this->display('Member:read'); 通常默认的视图目录是View

5.ajax的返回$this->ajaxReturn(eval("return $xsq;"));

U方法:默认当前模块,,U('office/index')为office控制器的index方法

二、变量获取

1.后台获取,推荐用I方法,注意怎么提交怎么取,取值为方括号

$id = $_GET['id']; 相当于$id = I('get.id,””)不存在返回“”

2.前台显示

$this->assign("condition",$condition);

直接$取值value="{$condition}"

数组<volist name="office_list" id="vo">

<tr><td>{$num++}</td>

<td>{$vo.name}</td>

<td><a href="__CONTROLLER__/deleteOfficeJudge?id={$vo.id}" οnclick="del()">删除</a></td></tr></volist>

三、配置文件

$DB_CONFIG = array(

'DB_TYPE'   => 'mysql', // 数据库类型

'DB_HOST'   => '127.0.0.1', // 服务器地址

'DB_NAME'   => 'evalute', // 数据库名

'DB_USER'   => 'root', // 用户名

'DB_PWD'    => '', // 密码

'DB_PORT'   => 3306, // 端口

'DB_PREFIX' => 'think_', // 数据库表前缀

'DB_CHARSET'=> 'utf8', // 字符集

'DB_DEBUG'  =>  TRUE, // 数据库调试模式 开启后可以记录SQL日志

);

$URL_CONFIG = array(

'URL_MODULE' => 0,

'DEFAULT_FILTER'   => 'htmlspecialchars,trim',

);

return array_merge($DB_CONFIG,$URL_CONFIG);

四、CURD操作

实例化:D会去实例化对应Model,有验证用它。M仅对数据库增删查改。

数据增改:自动验证,令牌验证(防重复提交)和自动完成在create方法完成。$User->create($data);可以先在$User赋值,也可以在$data数组赋值。$User->add();写入数据库,因为create过所以add不传数据。也可不创建直接add($data)。save类似。

数据读取:连贯操作;查询条件尽量使用数组方式,这是更为安全的方式;

$Model->where("id=%d and username='%s' ",array($id,$username))->select();

数据删除:$Form->delete(5);表示删除主键为5的

页面的删除提示

function del(){

if(!confirm("确认要删除?")){

window.event.returnValue = false;

}

}

五、视图模型

namespace Home\Model;

use Think\Model\ViewModel;

class ContentModel extends ViewModel{

public $viewFields = array(

'paper'=>array('name'), 'pcontent'=>array('id','qOrder','paperId','itemId','_on'=>'paper.id=pcontent.paperId'),

'question'=>array('subName','option'=>'radio','startDesc','endDesc','_on'=>'pcontent.qId=question.id'),

'type'=>array('name'=>'type','_on'=>'type.id=question.type'),

'item'=>array('name'=>'itemName','_on'=>'pcontent.itemId=item.id'),

);

}

六、模版替换-特殊字符串

__APP__: 会替换成当前应用的URL地址 (不含域名)

__MODULE__:会替换成当前模块的URL地址 (不含域名)

__CONTROLLER__(__或者__URL__ 兼容考虑): 会替换成当前控制器的URL地址(不含域名)

__ACTION__:会替换成当前操作的URL地址 (不含域名)

__SELF__: 会替换成当前的页面URL

__PUBLIC__:会被替换成当前网站的公共目录 通常是 /Public/

七、文件上传

<input type="file" name="photo"/>

<img style='margin:10px;border:1px solid black;' src="__ROOT__/Uploads/{$office_info.photo}" />

$config = array(

'maxSize'    =>    3145728,

'rootPath'   =>    './Uploads/',

'savePath'   =>    '',

'saveName'   =>    array('uniqid',''),

'exts'       =>    array('jpg', 'gif', 'png', 'jpeg'),

'autoSub'    =>    true,

'subName'    =>    array('date','Ymd'),

);

$upload = new \Think\Upload($config);// 实例化上传类

$info   =   $upload->upload($_FILES['photo']);

if(!$info) {// 上传错误提示错误信息

$this->error($upload->getError());

}else{// 上传成功 获取上传文件信息

echo $info['savepath'].$info['savename'];

}

八、验证码

<img src='__MODULE__/user/verify' οnclick="show(this)" >

public function verify(){

$Verify = new \Think\Verify;

$Verify->useImgBg = true;

ob_clean();//丢弃输出缓冲区中的内容

$Verify->entry();

}

九、引入菜单文件

<include file="Public/header.html"/>

十、修改时-单选框,复选框

单选 用eq

<select name="type" value="{$question_info.type}">

<volist name="type_list" id="t">{$t.id}

<eq name="t.id" value="$question_info.type">

<option value="{$t.id}"  selected="selected">{$t.name}</option>

<else/>

<option value="{$t.id}">{$t.name}</option>

</eq>

</volist>

</select>

复选框 用in

<volist name="radio_list" id="r">

<in name="r.id" value="$question_info.option">

<input name="radio[]" type="checkbox" value="{$r.id}" checked="checked">{$r.opname}

<else/>

<input name="radio[]" type="checkbox" value="{$r.id}">{$r.opname}

</in>

</volist>

复选框提交后值的处理

foreach ($_POST['radio'] as $key => $value) {

$option = $option.$value.",";

}

$data['option'] = substr($option,0,strlen($option)-1);

分割字符串

if($question_info['option'] != null){

$question_info['option'] = explode(",",$question_info['option']);}

十一、验证用户名是否已存在ajax+jquery

返回值echo json_encode($user_list);

function checkName(){

$.ajax({

type:"POST",

url: "__CONTROLLER__/testUser",

data:"uname="+$('#uname').val(),

success: function(msg){

// for(var mi in eval('('+msg+')')){

// alert(mi+"-->"+eval('('+msg+')')[mi]);

// }

if(eval('('+msg+')') != null){

$('#notice').html( "已存在");

}else{

$('#notice').html( "可以使用");

}

}

});

}

十二、分页

$count = $type->count();

$Page = new \Think\Page($count,2);

$Page -> setConfig('header','共%TOTAL_ROW%条');

$Page -> setConfig('first','首页');

// $Page -> setConfig('last','共%TOTAL_PAGE%页');

$Page -> setConfig('prev','上一页');

$Page -> setConfig('next','下一页');

// $Page -> setConfig('link','indexpagenumb');//pagenumb 会替换成页码

$Page -> setConfig('theme','%HEADER% %FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END%');

$show = $Page->show();

$type_list = $type->order('name desc')->limit($Page->firstRow.','.$Page->listRows)->select();

$this->assign("type_list",$type_list);

$num = $Page->firstRow + 1;//序号

$this->assign("num",$num);

$this->assign("page",$show);

<tr><td colspan="3"><div>{$page}</div></td></tr>

分页带条件,则条件查询的form表单采用get方式提交

十三、自定义菜单

1.js中的数组,注意Array的A大写

var menus = new Array();

menus[0] = {"id":1,"name":"体育","ismenu":"1"}

menus[1] = {"id":2,"name":"音乐","ismenu":"1"}

2.js取发生事件的控件的信息

οnclick="del(this)"

del中var myid = obj.id;

3.jquery取控件的值

$("#xsq").attr("value",value);

$("#xsq").val();

十四、调试

F12 看元素,看网络传输

$this->show(“2333”);

var_dump($a); php写法,在thinkphp中dump($a)效果相同

转载于:https://www.cnblogs.com/froid/p/5481066.html

thinkphp学习总结相关推荐

  1. thinkphp学习笔记10—看不懂的路由规则

    原文:thinkphp学习笔记10-看不懂的路由规则 路由这部分貌似在实际工作中没有怎么设计过,只是在用默认的设置,在手册里面看到部分,艰涩难懂. 1.路由定义 要使用路由功能需要支持PATH_INF ...

  2. ThinkPhp学习06

    原文:ThinkPhp学习06 一.简单学习修改用户信息模块 1.编写UserAction.class.php 1 <?php 2 3 class UserAction extends Acti ...

  3. thinkphp学习笔记7—多层MVC

    原文:thinkphp学习笔记7-多层MVC ThinkPHP支持多层设计. 1.模型层Model 使用多层目录结构和命名规范来设计多层的model,例如在项目设计中如果需要区分数据层,逻辑层,服务层 ...

  4. ThinkPhp学习12

    原文:ThinkPhp学习12 二.输出模板内容      (重点) a.display 1.display中没有参数    $this->display(); 2.可以带参数    $this ...

  5. ThinkPhp学习13

    原文:ThinkPhp学习13 简单登录验证 创建Login类 1 <?php 2 class LoginAction extends Action { 3 function index(){ ...

  6. thinkphp学习笔记8—命名空间

    原文:thinkphp学习笔记8-命名空间 新版本(3.2)中采用命名空间的方式定义和加载类库文件,解决多个模块之间的冲突问题,并实现了更加高效的自动加载机制. 需要给类库定义所在的命名空间,命名空间 ...

  7. ThinkPhp学习01

    原文:ThinkPhp学习01 一.ThinkPHP的介绍            MVC   M - Model 模型                工作:负责数据的操作   V - View  视图 ...

  8. ThinkPHP 学习笔记 ( 一 ) 项目部署:应用部署方式与模块分组部署方式

    /*** ThinkPHP version 3.1.3*/ ThinkPHP ( 官方网站:http://www.thinkphp.cn/ ) 目前最新版本是 3.2.2,它要求 PHP 的版本高于 ...

  9. curd日志记录php,ThinkPHP学习之CURD操作(一)

    写在前面 这周开始学习ThinkPHP,将学习的日记记录下来.不仅仅学习怎么用TP,也要从源码上来学习TP框架. 日记每天都写,但不一定都放到网上.希望自己能够坚持下去. 闲话少说,既然是阅读源码,关 ...

  10. php学到什么程度可以学thinkphp,thinkphp学习一

    框架:就是别人写好的一批类和一个规则 不论是服务器平台还是我们使用的web服务器 windows linux unix  apache iis ngix比较好的实现扩平台 方便跨平台上面(unix w ...

最新文章

  1. 我们离爱因斯坦想了解的“上帝的思想”,还有多远?
  2. PostgreSQL参数优化对比性能测试
  3. 为了远程控制:teamview检测为商用、ZeroTier + 自带远程桌面、Ping其他电脑ping不通
  4. 是不是用博客园编辑器插入修改图片好困难?怀念Word吧,看看用Word2010发博客教程吧~...
  5. JNDI(datasource)在tomcat,JBOSS下的spring+quartz配置
  6. 进程的退出方式以及僵尸进程和孤儿进程
  7. 普通的人改变结果,优秀的人改变原因,顶级优秀的人改变模型
  8. linux中断处理程序架构,Linux外部中断架构初始化流程-----Tiny6410
  9. HDU 6444 Neko's loop(单调队列)
  10. unknown type name err_status_t; did you mean srtp_err_status_t/err_status_ok/err_status_replay_fail
  11. java button 背景色_以编程方式删除UIButton背景颜色
  12. hg527-c CU.html,华为无线猫设置
  13. 海康SDK集成,PTZ控制
  14. Adobe 软件清理工具AdobeCreativeCloudCleanerTool.exe
  15. 3000商家挤进云栖小镇,抢滩阿里速卖通平台
  16. “Computer_Breaker”旁的“惊险”旅程——JSOI2021受虐记
  17. 三菱编程软件GX Works2复制粘贴错位
  18. Windows驱动学习第一步,第一个Windows驱动
  19. 关爱老年人·守住养老钱
  20. 计网必会:P2P体系结构,BitTorrent,DHT,分布式散列表

热门文章

  1. 计算机绘图设备cmy,《计算机图形学》练习测试题库
  2. TF-tf.keras.layers.Conv1D
  3. re.sub对多处字符串进行替换
  4. numpy.zeros(np.zeros)
  5. Leetcode-9-回文数(简单)
  6. 总结 图(有向图、无向图、权、度、存储结构、邻接矩阵、领接表 概念)
  7. 数据挖掘数据的资料分享
  8. Hadoop 2.6.0 HA高可用集群配置详解
  9. 计算机爱好者协会义务维修的目的,计算机协会义务维修活动总结范文
  10. 十六、Oracle学习笔记:索引和约束(表字段快速查询和约束)