学习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 \Think\Upload();// 实例化上传类
$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;width: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 Home\Controller;
use Think\Controller;
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 Home\Controller;
use Think\Controller;
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 Home\Model;
use Think\Model;
class UserModel extends Model
{
public function my(){
return '111';
exit();
}
}