定义常量
在入口文件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
视图模型 只有一对一查询 多对一查询
TP3.2.3笔记
最新推荐文章于 2024-01-11 16:47:16 发布