标签:
thinkphp3.2 手册目录:http://www.kancloud.cn/manual/thinkphp/1678
一、页面跳转
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}" onclick="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‘ onclick="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取发生事件的控件的信息
onclick="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)效果相同
标签:
原文地址:http://www.cnblogs.com/froid/p/5481066.html