本节目标:
定义登录和用户展示模块的controller层代码结构,实现http请求传参访问以及基本的工具类定义
代码结构
image.png- Home目录下作为登录的入口
- User模块下作为用户信息管理的入口
- Common是作为通用模块
User模块下暂时只有Controller一层,先来测一下多模块的controller结构。
管理控制层
最初代码如下
<?php
/**
* Created by PhpStorm.
* User: kai.yang
* Date: 2019-01-01
* Time: 14:16
*/
namespace User\Controller;
use Think\Controller;
class AdminController extends Controller
{
public function printArray($array){
print_r($array);
}
public function query(){
$nowTime=date('Y-m-d H:m:s',time());
//通过I函数获取get获取post参数,get.表示只获取get参数,post表示只获取post参数,不写代表通用,后面的'kai'代表默认值
$name = I('get.name', '');
$startTime = I('get.startTime', '2015-01-01 00:00:00');
$endTime= I('get.endTime', $nowTime);
$model=M("users u");
$map=array();
$map["CREATE_TIME"]=array('egt',$startTime);
$map["CREATE_TIME"]=array('elt',$endTime);
//判断获取到name参数是否为空,为空时,不传入此参数
if($name){
$map['name']=array('like',"%".$name."%");
}
//users表和password表关联查询,根据名称和时间获取数据,查出最多2条,按时间倒序
$result=$model->field("u.name,p.pass")->join("left join password p on u.id=p.user_id")
->where($map)->order('u.Create_time desc')->limit(2)->select();
print_r($result);
}
}
页面访问
如此可以看到数据根据我们的条件进行查询,并且此时我们再回过头来看下在tp中定义的controller,对应User目录下的AdminController我们的访问url时间是
http://local.p2.cn/User/Admin/query?name=dd
对于Home目录下我们定义登录相关内容,创建目录Login,定义AdminController.class.php类,作为登录逻辑处理类,因为,我们自己加了一层Login目录,所以需要定控制器的层级为2,否则会访问不到,我们在Home目录下Conf的config.php中添加配置
<?php
return array(
#标注此模块的控制器为两层目录
'CONTROLLER_LEVEL' => 2,
);
另外数据库配置,被我们移到了最外层Common下的Conf中表示所有模块共用
然后我们定义Login的控制器初版代码
<?php
/**
* Created by PhpStorm.
* User: kai.yang
* Date: 2019-01-01
* Time: 15:26
*/
namespace Home\Controller\Login;
use Utils\LoginUtils;
use Think\Controller;
class AdminController extends Controller
{
public function login(){
$loginName=I("get.loginName");
$password=I("get.password");
if(!$loginName){
echo "登录名为空";
exit(0);
}
if(!$password){
echo "密码为空";
exit(0);
}
$checkLogin=new LoginUtils();
$result= $checkLogin->checkLogin($loginName,$password);
echo "登录结果".$result;
}
}
这里我们定义了一个LoginUtils类用作登录的验证逻辑工具类,我们看看是怎么实现的
- 在Application目录下定义了Utils包,用来存放所有工具类
- 在Common/Conf/config.php中定义AUTOLOAD_NAMESPACE自动加载此目录下的类
<?php
return array(
'AUTOLOAD_NAMESPACE' => array(
'Utils' => APP_PATH.'Utils',
)
);
- 在Utils定义工具类
<?php
/**
* Created by PhpStorm.
* User: kai.yang
* Date: 2019-01-01
* Time: 16:51
*/
namespace Utils;
class LoginUtils
{
public function checkLogin($loginName,$password){
echo "检测".$loginName."是否正确<br/>";
if($loginName="kai"){
return "success";
}else{
return "false";
}
}
}
- 在controller引用此类
use Utils\LoginUtils;
class AdminController extends Controller
{
public function login(){
.......
$checkLogin=new LoginUtils();
$result= $checkLogin->checkLogin($loginName,$password);
.....
}
}
这样就实现了自定义工具类的需求。
好了,本节定义了基本的controller类的相关使用,下一节再把对应页面需求加进来就齐活了。
网友评论