1.tp的几个模板常量
__URL__ 同模块同控制器,后面直接跟方法(操作)
__MODULE__ 同模块不同控制器 后面接控制器名
__APP__ 不同模块,后面接home/admin
__PUBLIC__ 项目的公共资源目录
ACTION_NAME 当前操作(方法)名
CONTROLLER_NAME 当前控制器名
后续再更.....
2.控制器使用细节
前置后置操作:(执行index之前执行:_before_index,执行index后执行:_after_index)
//前置操作
public function _before_index(){
echo 'aaa<br>';
}
public function index(){
echo 'demo 控制器的index<br>';
}
//后置操作
public function _after_index(){
echo 'bbb<br>';
}
3.tp的传参问题
方法1): {:U('admin/demo/show?id=1&type=服装')}
方法2): {:U('admin/demo/show/id/1/type/服装')}
方法3): {:U('admin/demo/show',array('id'=>1,'type'=>'电脑'))}
服务端接收:
方法1: public function show($id,$type){ echo $id,$type } 注意:形参必须和url里面的参数一致
方法2: 不写形参,直接用get接收.
4.ajax
1) 服务端通过数据库取得结果集,用json_encode($res) 转变为json格式. 然后$this->ajaxReturn($res,'json');返回数据到前台,前台ajax接收,不必声明dataType,即可处理.传递过来的就是个json对象.
5.空操作
1)控制器存在,方法不存在,则在控制器中定义一个方法 :
//空操作
public function _empty(){
//ACTION_NAME -》url中的方法名
echo '请求'.ACTION_NAME.'方法不存在';
}
2)若访问了不存在的控制器,则定义一个控制器,名字叫 EmptyController
6.跳转
操作执行成功后: $this->success('插入成功',U('admin/demo/dump1'),5);//参数1表示提示信息,参数2表示要跳转的页面,参数3表示几秒跳转
操作失败后: $this->error('插入失败');//返回 相当于return back();
重定向: $this->redirect('/admin/index/index');//登陆检测
7: 文件上传
客户端:上传表单
服务端:
public function upload(){
$upload = new \Think\Upload();// 实例化上传类
$upload->maxSize = 3145728 ;// 设置附件上传大小
$upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型
$upload->rootPath = './Public/Uploads/'; // 设置附件上传目录
$upload->autoSub = false;//拒绝创建子目录
// 上传文件
$info = $upload->upload();
if(!$info) {
// 上传错误提示错误信息
$this->error($upload->getError());
}else{
// 上传成功
$this->success('上传成功!');
}
}