TP3.2.3笔记

定义常量
在入口文件index.php
define(“SITE_URL”,”http://xxxx/”);
define(“CSS_URL”,SITE_URL.”shop/public/css/”);
模板中:href=”{$Think.const.CSS_URL}style.css”

设置常量有两种方式:
const name = value; 作用域根据当前命名空间决定
define() 作用域全局


空操作
对应的控制器中建立 _empty($m,$arg) 方法(建立模板会自动调用)
空控制器
建立EmptyController.class.php控制器 里面一 个_empty方法

//url地址大小写不敏感设置
‘URL_CASE_INSENSITIVE’ => true,

跨控制器调用
$user = A(“User”); //通过快捷函数实例化控制器对象
echo $user->number(); 调用方法

//A([项目://] [模块] /控制器);
//R([项目://] [模块] /控制器/操作方法); 省去了调用方法

Frame里边src= 通过独立路由进行请求

修改默认模板引擎
TMPL_ENGINE_TYPE => ‘Smarty’,

如果是核心板 将Smarty文件夹放置在/ThinkPHP/Library/Vendor

TMPL_ENGINE_CONFIG=>array(‘left_delimiter’=>’{{’,’right_delimiter=>’}}’’),

 Css样式有{} 使用{literal}标签禁止smarty解析
 $Think变为$Smarty

数据添加 add

1. 数组方式添加
2. AR

在create()收集表单方法内部会自动过滤非法的字段信息

$this->success(‘提示信息’,’跳转的路径’);


数据修改save

数据删除 delete

执行原生sql语句
查询语句 query()   返回一个二维数组
添加、修改、删除 execute() 返回受影响的条数
$goods=D(“Goods”);
$sql=”select * from sw_goods”;
$res=$good->query($sql);

表单验证
1. 制作表单
2. 表单form数据通过create() 方法收集
3. 自定义数据model 模型类实现具体验证规则

Create()集成表单验证 返回值为是否验证成功
$user = new 

$z = $user -> create();
If(!$z){
	$user->getError();  //返回验证错误的信息
	Exit();
}

UserModel.class.php

	namespace Model;
	use Think\Model;
	
	class UserModel extends Model{
		//一次性获得全部验证错误
		protected $patchValidate = true;
		
		//通过重写父类属性_validate实现表单验证
		protected $_validate = array(
			//验证字段1,验证规则,错误提示,[验证条件,附加规则,验证时间],
			//验证用户名,require必须填写项目
			array('username','require','用户名必须填写'),
			array('password','require','密码必须填写'),
			
			//可以为同一个项目设置多个验证
			array('password2','require','确认密码必须填写'),
			array('password2','password','与密码的信息必须一致',0,'confirm'),
				
			array('user_email','email','邮箱格式不正确'),
				
			//正则验证  都是数字的、长度5-10位、首位不为0
			array('user_qq',"/^[1-9]\d{4,9}$/",'qq格式不正确'),
				
			//下拉列表框  必须选择一个 值在2,3,4,5范围
			array('user_xueli',"2,3,4,5",'必须选择一个学历',0,'in'),
				
			//callback利用当前model里边的一个指定方法进行验证
			array('user_hobby','check_hobby','爱好必须两项以上',0,'callback'),
		);
		
		//$name = $_POST['user_hobby']
		function check_hobby($name){
			if(count($name)<2){
				return false;
			} else {
				return true;
			}
		}
	}

验证码:
	    	function verifyImg(){
    		$config = array(
    				'imageH' => 30,
    				'imageW' => 120,
    				'fontSize' =>12,
    		);
    		$verify = new \Think\Verify($config);
    		$verify -> entry();  //输出验证码并把验证码的值保存在session中
    	}


<img src=”{$smarty.const.__CONTROLLER__}/verifyImg”>




验证码校验

Function login(){
	If(!empty($_POST)){
		$verify = new \Think\Verify();
		If(!$verify->check($_POST[‘captcha’])){
Echo ‘验证码错误’;
}
	Echo ‘验证码正确’;
}
}




ManagerModel
制作一个checkNamePwd方法对用户名和密码进行校验

根据指定字段进行查询 getByXXX($xxx) 父类Model利用__call()封装的方法 返回一维数组

$info = $this->getByMg_name($name);

if($info != null){
    if($info['mg_pwd']) != $pwd{
        return false;
    }else{
        return $info;
    }
}else{
        return false;
}

在控制器中

$user = new \Model\ManagerModel();
$rst = $user -> checkNamePwd($_POST['mg_use'],$_POST['mg_pw']);

if($rst === false){
  echo '用户名密码错误';
}else{
  session('mg_username',$rst['mg_name']);
  session('mg_id',$rst['mg_id']);
  //$this->redirect($url,$params,$delay,$msg)
  //$this->redirect('Index/index',array('id'=>100,'name'=>'tom',2,'即将登陆成功'));
  $this->redirect('Index/index');
}

function logout(){
  session(null);
  $this->redirect('Manager/login');
}

附件上传  Upload()方法

把已经上传好的图片制作缩略图:















关联模型与视图模型
关联模型 用作增改删
  一对一时 用户表与身份证  
用户对身份证 HAS_ONE  
想查询用户信息以及对应的身份证时 删除用户时删除对应的身份证

//身份证对用户 BELONGS_TO 想查询身份证对应的用户只查名字

	一对多 用户表和留言表
用户表对留言表HAS_MANY 支持mapping_limit和mapping_order
删除用户删除用户发表的所有留言

多对一://留言表对用户表     还是BELONGS_TO和一对一相同

	多对多:用户表 角色表 和中间关联表

MANY_TO_MANY
Class UserModel extends RelationModel
 { 
protected $_link = array( 
'Role'=>array(
 'mapping_type'=>self:: MANY_TO_MANY ,
 'foreign_key'=>'uid',			//group表中uid对应user表中的id
 'relation_foreign_key'=>'gid', 	//role表中对应group表中的id
'relation_table'=>'group', 	    //group为中间表
), 
); }


一对多查询 需要查询出 所有大分类 里边所有的大分类和对应的小分类 使用关联模型 HAS_MANY
查询 指定的大分类 里面的所有小分类 使用视图模型 大分类ViewModel

查询 留言对应的用户 多对一查询 使用视图模型

根据学生查对应的班级 使用UserViewModel
查询所有班级 实例化Uclass

视图模型 只有一对一查询 多对一查询

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值