学习tp思想就是在学习的过程中,学习怎么使用手册,重点在于放弃拐杖,以后可以独立思考问题!!!
1,common 目录 放置公共函数
2,pathinfo地址 例如:127.0.0.1/index.php/text/index/index
3.__ROOT__ 在PHP和模板目录都可以使用,就是根下面的目录,用于寻找根目录下面的图片,或者css文件.... ---- 具体在php开发手册里面的附录一节中,有常量参考,用到直接查看,只是模板之间的替换,不一定是PHP常量
../Public/ 直接到
__SELF__ 当前路径
4,C方法,加载配置
5,URL伪静态 'URL_HTML_SUFFIX'=>'html';
6,U方法
可以做地址跳转
7,$this->redirect('show'); //专门做地址跳转,这句话的意思是跳转到这个类下面的show方法下面
8,跨模块调用方法,使用A('Test')模块
R('Test/index'); 调用test下面的index方法
9,mysql_escape_string($str);
常见错误:
foreach 循环不显示数据:
解决方法:我遇到过不能显示数据的问题,找了半天,原来是控制器里面的数组变量问题,{$this->assign('param','$arr');
$this->display();)}将数组'$arr'的引号去除即可显示
一:
index.php <?php header('content-type:text/html;charset=utf8'); define('BIND_MODULE','Home'); define('APP_PATH','./Application/'); require './ThinkPHP/ThinkPHP.php'; ?> admin.php <?php header('content-type:text/html;charset=utf8'); define('BIND_MODULE','Admin'); define('APP_PATH','./Application/'); require './ThinkPHP/ThinkPHP.php'; ?> 访问: http://localhost/mylove/ http://localhost/mylove/admin.php
常用方法:
//判断是否今天登陆过 <if condition="$vo.login_time gt strtotime(date('Y-m-d'))">今天登陆过</if> //判断是否空值或0 <eq name="vo.end_time" value="0"> 不是0 <else /> 大于0显示 </eq> //时间戳转换 {$vo.login_time|date="Y-m-d H:i:s",###} //U方法直接回首页 {:U('/index')} 或 {:U('/index')} //U方法跨模块 {:U('admin/xxxx/xxxx')} //下拉表单自动选中 <select id="tid" name='tid'> <volist name="list" id="vo"> <option value="{$vo.id}" <eq name="vo.id" value="$_GET['id']">selected</eq> > {$vo.name}</option> </volist> </select>
public function upload(){ var_dump($_POST); var_dump($_FILES); //如果不为空 if(!empty($_FILES)){ //$userInfo = $user->where("id={$_POST['id']}")->find(); //@unlink($userInfo['pic']);//删除原图 $upload = new ThinkUpload();// 实例化上传类 $upload->maxSize = 3145728 ;// 设置附件上传大小 $upload->exts = array('jpg', 'gif', 'png', 'jpeg'); $upload->rootPath = './Public';//文件的上传目录是由 rootpath属性和savePath属性控制的 $upload->savePath = '/Uploads/User/'; $info = $upload->upload(); //$_POST['pic'] = $upload->rootPath.$info['pic']['savepath'].$info['pic']['savename']; } }
二,经验总结
1,关于注册登录,继承所有文件common控制器,除了user控制器,因为如果user也继承,那么就会不停的跳转
关于登录: public function check_login() { //检查用户是否登录 if(isset($_SESSION['name'])) { //跳转到首页 echo 'welcome to index'; }else{ //跳转到登录页面 echo "<script>window.location.href='http://localhost/wap/Home/User/login.html';</script>"; } }
2,关于wap端自动下一页,JS控制端写法
<script> //ajax无限假暂数据 var i = 2; //设置当前页数 var winH = $(window).height(); //页面可视区域高度 $(window).scroll(function () { var scrollTop = $(window).scrollTop(); //滚动条滚动高度 var documentH = $(document).height(); //滚动条高度 var windowH = $(window).height(); //窗口高度 //var windowH = document.body.clientHeight; //窗口高度 if(scrollTop >= documentH - windowH){ //$("#nodata").css('display','block'); $("#nodata").html('正在努力加载!'); //if(salary == 1)salary=''; //if(cate == 108)cate=''; $.ajax({ type:'get', data:{page_num:i}, url:'{:U('Home/Index/act')}' }).done(function(str) { if(str != ''){ i++; $("#content").append(str); //$("#nodata").css('display','none'); } else { $("#nodata").css('display','block'); $("#nodata").html('报告小主暂无数据!'); } }); } }); </script>
页面端写法;
<div class="container main"> <div class="list-group" id="content"> <!--<foreach name="name" item="vo" >--> <div class="list-group-item"> <a href="{:U('Home/Index/detail',array('user_id'=>122,'user_type'=>2,'staff_id'=>$vo['staff_id']))}" style="background:red;200px;height:100px;"> <div class="media"> <div class="media-left"> <img src="{$vo.firm_logo}"> </div> <div class="media-body bot"> <h4>{$vo.positionName}<span>{$vo.updata_time}</span></h4> <p>联系人:<span class="liuba">{$vo.owner_name}</span></p> <p>地址:{$vo.address}<span class="space_o"></span>人数:<span class="space_t">{$vo.per_num}</span></p> <p>面议</p> </div> </div> </a> </div> <!--</foreach>--> </div> </div>
ajax在php端返回数据,要多条时: <?php $data = array( 'result1' => '1', 'result2' => '2', 'result3' => '3' ); echo json_encode($data); ?>
三,在前台页面显现
<?php
namespace HomeController;
use ThinkController;
class IndexController extends Controller {
public function index(){
$this->show('<style type="text/css">*{ padding: 0; margin: 0; } div{ padding: 4px 48px;} body{ background: #fff; font-family: "微软雅黑"; color: #333;font-size:24px} h1{ font-size: 100px; font-weight: normal; margin-bottom: 12px; } p{ line-height: 1.8em; font-size: 36px } a,a:hover{color:blue;}</style><div style="padding: 24px 48px;"> <h1>:)</h1><p>欢迎使用 <b>ThinkPHP</b>!</p><br/>版本 V{$Think.version}</div><script type="text/javascript" src="http://ad.topthink.com/Public/static/client.js"></script><thinkad id="ad_55e75dfae343f5a1"></thinkad><script type="text/javascript" src="http://tajs.qq.com/stats?sId=9347272" charset="UTF-8"></script>','utf-8');
}
}
四,关于MODEL
<?php
namespace HomeController;
use ThinkController;
class IndexController extends Controller {
public function index(){
$User = D('Home/User');
$m = $User->my();
var_dump($m);
//$this->show('<style type="text/css">*{ padding: 0; margin: 0; } div{ padding: 4px 48px;} body{ background: #fff; font-family: "微软雅黑"; color: #333;font-size:24px} h1{ font-size: 100px; font-weight: normal; margin-bottom: 12px; } p{ line-height: 1.8em; font-size: 36px } a,a:hover{color:blue;}</style><div style="padding: 24px 48px;"> <h1>:)</h1><p>欢迎使用 <b>ThinkPHP</b>!</p><br/>版本 V{$Think.version}</div><script type="text/javascript" src="http://ad.topthink.com/Public/static/client.js"></script><thinkad id="ad_55e75dfae343f5a1"></thinkad><script type="text/javascript" src="http://tajs.qq.com/stats?sId=9347272" charset="UTF-8"></script>','utf-8');
//$this->show('<style type="text/css">*{ padding: 0; margin: 0; } </style><h2>my name is liming</h2>');
$this->display();
}
}
在HOME/MODEL下创建UserModel.class.php
<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 15-4-27
* Time: 下午1:22
* @author 郑钟良<zzl@ourstu.com>
*/
namespace HomeModel;
use ThinkModel;
class UserModel extends Model
{
public function my(){
return '111';
exit();
}
}