阅读基于ThinkPHP框架开发的项目
1、查看入口文件
2、应用目录中的Common/Conf,看公共配置
3、后台目录中的Common/Conf,然后控制器、模块、视图(相应ajax请求的js页面),接着再其他模块

注意:
1、如遇控制器中找不到的方法,可由内到外,查看公共函数文件,即Common/function.php
2、看不懂的,可查阅相关手册,弄懂之后记录下来,以便以后温习使用

 

使用ThinkPHP框架开发项目流程
1、根据需求设计数据库;
2、构思框架结构
3、配置变量、相关业务逻辑;
4、先后台,再前台;
5、初步完工之后,再完善BUG。

注意:
1、调试途中,遇到数据库驱动报错问题,先清理缓存;

 

/*允许用户自定义替换系统默认特殊变量,位于行为的配置文件中
如:__PUBLIC__,方法如下:
在配置文件中配置 TMPL_PARSE_STRING */
'TMPL_PARSE_STRING' => array(
'__PUBLIC__' => __ROOT__.'/Public',
)

//在后台控制器的基类构造函数中,限制访问的操作方法为登录或退出,再判断SESSION中是否有登录信息,无则跳转到登录页面。
public function _initialize(){
$action_name = strtolower(ACTION_NAME);
if(!in_array($action_name,array('login','logout'))){
if(!session('?zhAdminInfo')){
$this->redirect('Admin/Login/login');
}
}
}

设置SESSION:session('zhAdminInfo',$adminInfo)
判断指定键的SESSION是否存在:session('?zhAdminInfo')

//判断请求类型,一方面可以针对不同类型进行处理,一方面需要验证安全性,如:IS_GET/IS_POST/IS_PUT/IS_AJAX等

//在模版中解析快捷函数 {:U('Login/index')}

//用jquery封装的AJAX函数发送POST表单
function send(){
//获取相关变量
var user_name = $('#user_name').val();
var password = $('#password').val();
//判断非布尔值和非空
if(!user_name || !password || user_name == '' || password == ''){
alert('用户名或密码不能为空');
return false;
}
//给AJAX函数 链接、发送方式、数据、类型、回调逻辑处理
$.ajax({
url : "{:U('Login/login')}",
type : "POST",
data : {
user_name :user_name,
password : password
},
dataType : 'json',
success : function(d){
if(d.status == 1){
window.location.href = d.url;
}else{
alert(d.msg);
}
},
error:function(){
alert('提交失败');
}
});
}

//回车登陆,为文档绑定keyup函数,设定按键值为回车时触发函数
$(document).keyup(function(event){
if(event.keyCode == 13){
sub();
}
});

//使用TP自带的分页类实现分页功能,例子:
//控制器中实例化模型获取数据
public function com_list(){
//设置总数和每页条数
$count = M('Comment')->count();
$page = new \Think\Page($count,2);
//替换变量
$page->setConfig('prev',"上一页");
$page->setConfig('next',"下一页");
//取出对应页数的数据
$comData = D('Comment')->limit($page->firstRow.','.$page->listRows)->select();
//show函数返回的是一个div标签
$show = $page->show();
$this->assign('show',$show);
$this->assign('comData',$comData);
$this->display();
}

//模版中展示数据,使用TP自带的标签,<Volist name="变量名" id="引用名">{引用名.id}...</Volist>
<Volist name="conData" id="v">
{$v.id}
...
</Volist>
{$show}

//alias用于设置当前数据表的别名,便于使用其他的连贯操作例如join方法等。

//使用TP自带的图片上传类,例子:
//定义上传属性
$config = array(
'maxSize' => 3145728,
'rootPath' => './Uploads',
'savePath' => 'Example/',
'saveName' => array('uniqid',''),
'exts' => array('jpg','gif','png','jpeg'),
);
//实例化上传类,并调用upload方法
$upload = new \Think\Upload($config);
$info = $upload->upload();

//使用Ueditor编辑器,例子:
//修改配置文件中的上传路径 Ueditor/php/config.json
//前台js加载
<script type="text/javascript" charset="utf-8" src="__ROOT__/Ueditor/ueditor.config.js"></script>
<script type="text/javascript" charset="utf-8" src="__ROOT__/Ueditor/ueditor.all.min.js"> </script>
<script type="text/javascript">
var ue = UE.getEditor('content_long_img',{
zIndex: 999,
initialFrameWidth: "500", //初化宽度
initialFrameHeight: 300, //初化高度
focus: false, //初始化时,是否让编辑器获得焦点true或false
maximumWords: 99999, removeFormatAttributes: 'class,style,lang,width,height,align,hspace,valign'
, //允许的最大字符数 'fullscreen',
pasteplain:false, //是否默认为纯文本粘贴。false为不使用纯文本粘贴,true为使用纯文本粘贴
autoHeightEnabled: true,
toolbars: [
['insertimage']
]
});
</script>

//@抑制报错,&$引用地址

//在js中使用TP内置常量的方法
先在html页面中定义一个js的变量,用来存储TP内置常量,然后再在js文件中引用即可。

?>

欢迎留言