欢迎光临
感谢一路有你

TP5 使用所遇到的问题(1)

如果你对该文章中的内容有疑问/不解,可以点击此处链接提问
要注明问题和此文章链接地址 点击此处跳转
 

1.判断参数传递方式

if(request()->isPost()){
$name = $_POST['name'];
$pwd = $_POST['pwd'];
}

 

2.在model里执行数据库

-----------
login.php
use think\Controller;
use app\common\model\Admin;
if(request()->isPost()){
$res = (new Admin())->login(input('post.'));
if($res['valid'])
{
//说明登录成功
$this->success($res['msg'],'Index/index');
}else{
//说明登录失败
$this->error($res['msg']);exit;
}
}

----------
admin.php
<?php
namespace app\common\model;
use think\Loader;
use think\Model;
use think\Validate;
class Admin extends Model
{
protected $pk = 'id';//主键
//设置当前模型对应的完整数据表名称
protected $table = 'mc_user';
/**
* 登录
*/
public function login($data)
{
//1.执行验证
$validate = Loader::validate('Admin');
// //如果验证不通过
if (!$validate->check($data)) {
return ['valid' => 0, 'msg' => $validate->getError()];
}
//2.比对用户名和密码是否正确
$userInfo = $this->where('name', $data['name'])->where('pwd', $data['pwd'])->where('is_admin', 1)->find();
//halt($userInfo);
if (!$userInfo) {
//说明在数据库未匹配到相关数据
return ['valid' => 0, 'msg' => '用户名或者密码不正确 或没有权限'];
}
//3.将用户信息存入到session中
session('admin', $userInfo['name']);
return ['valid' => 1, 'msg' => '登录成功'];
}
}

-------
验证器admin.php
<?php
namespace app\admin\validate;
use think\Validate;
class Admin extends Validate
{
protected $rule = [
'name'=>'require',
'pwd'=>'require',
// 'code'=>'require|captcha'
//相同名字的验证规则,用|隔开,只需在下新增提示消息即可
];
protected $message = [
'name.require'=>'请输入用户名',
'pwd.require'=>'请输入密码',
// 'code.require'=>'请输入验证码',
// 'code.captcha'=>'验证码不正确'
];
}

 

3.模版继承

base.html在view目录下
---------
{extend name='base' /}
{block name='admin_box'}
替换的内容
{/block}
---------

 

4.session

读取
{:session('admin')}
{$Think.session.admin}

 

5.独立验证

post传入数据,执行验证

//执行验证
use think\Loader;
use think\Model;
use think\Validate;
//执行验证
$validate = new Validate([
'pwd' => 'require',
'new_pwd' => 'require',
'confirm_pwd' => 'require|confirm:new_pwd'
],[
'pwd.require' => '请输入原始密码',
'new_pwd.require' => '请输入新密码',
'confirm_pwd.require' => '请重复新密码',
'confirm_pwd.confirm' => '确认密码与新密码不一致'
]
);
if (!$validate->check($data)) {
dump($validate->getError());
}

 

6.修改密码功能

public function pwd($data){
//执行验证
$validate = new Validate([
'pwd' => 'require',
'new_pwd' => 'require',
'confirm_pwd' => 'require|confirm:new_pwd'
],[
'pwd.require' => '请输入原始密码',
'new_pwd.require' => '请输入新密码',
'confirm_pwd.require' => '请重复新密码',
'confirm_pwd.confirm' => '确认密码与新密码不一致'
]
);
if (!$validate->check($data)) {
return ['valid'=> 0,'msg'=>$validate->getError()];
}
//原始密码是否正确
$userInfo = $this->where('pwd',$data['pwd'])->where('id',session('admin_id'))->find();
if(!$userInfo){
return ['valid'=>0, 'msg'=>'原始密码不正确'];
}
//修改密码
// save方法第二个参数为更新条件
$res = $this->save([
'pwd' =>$data['new_pwd'],
],[$this->pk => session('admin_id')]);
if($res){
return ['valid'=>1, 'msg'=>'密码修改成功'];
}else{
return ['valid'=>0, 'msg'=>'密码修改失败'];
}
}

 

7.数据库的使用

// 定义$db
protected $db;
// 初始化
protected function _initialize ()
{
parent::_initialize(); // TODO: Change the autogenerated stub
$this->db = new \app\common\model\Category();
}

public function addcatedo(){
if(request()->isPost()){
// dump(input('post.'));
$res = $this->db->addcatedo(input('post.'));
if($res['valid'])
{
//操作成功
$this->success($res['msg'],'index');exit;
}else{
$this->error($res['msg']);exit;
}
}
}

 

8.添加顶级分类

model 里的category.php
--------
<?php
namespace app\common\model;
use think\Model;
class Category extends Model
{
protected $pk = 'id';//主键
//设置当前模型对应的完整数据表名称
protected $table = 'mc_cate';
//添加顶级分类
public function addcatedo($data){
//执行验证
//执行添加
$res = $this->validate(true)->save($data);
if($res==false){
return ['valid'=>0,'msg'=>$this->getError()];
}else{
return ['valid'=>1,'msg'=>'添加成功'];
}
}
}
验证器category.php
----
<?php
namespace app\admin\validate;
use think\Validate;
class Category extends Validate
{
protected $rule = [
'cname'=>'require',
'sort'=>'require|number|between:1,999',
];
protected $message = [
'cname.require'=>'请输入分类名',
'sort.require'=>'排序不能为空',
'sort.number'=>'排序必须为数字',
'sort.between'=>'数字1--999',
];
}

 

9.输出到页面(与tp3.2一样)

$this->assign('title','标题')

 

10.pathinfo 地址参数不能通过get方式获取

get传参

$cid = input('get.id'); //null
$cid = input('param.id'); //可以获取

 

11

$data = $this->db->where('id',$cid)->find();

 

 

 

 

赞(0) 打赏
未经允许不得转载:王明昌博客 » TP5 使用所遇到的问题(1)
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏