>[info]MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型(M)、视图(V)、控制器(C),它们各自处理自己的任务。
首先了解一下该系统的整体架构。
## 入口文件
入口文件主要完成:
* 定义框架路径、项目路径(可选)
* 定义系统相关常量(可选)
* 载入框架入口文件(必须)
该版本默认入口文件为``public/index.php`` ,内容如下:
~~~
include __DIR__.'/../version.php';
~~~
>[info]入口文件位置的设计是为了让应用部署更安全,public目录为web可访问目录,其他的文件都可以放到非WEB访问目录下面。
![](https://box.kancloud.cn/c6d6c9ac620a4fb7405a9fdf37a3d112_502x171.png)
## 模型
模型类通常完成实际的业务逻辑和数据封装,并返回和格式无关的数据。
## 控制器
每个模块拥有独立的MVC类库及配置文件,一个模块下面有多个控制器负责响应请求,而每个控制器其实就是一个独立的控制器类。
控制器主要负责请求的接收,并调用相关的模型处理,并最终通过视图输出。严格来说,控制器不应该过多的介入业务逻辑处理。
~~~
namespace app\modules\home;
class login extends base{
//允许访问的URL
public $allowAction = ['index'];
public function index(){
obj('app\block\login')->login_in();
if(is_ajax()){
$user = $_POST['user'] ;
$pwd = $_POST['pwd'] ;
if(model('stores_users')->login($user,$pwd)===true){
exit(json_encode(['status'=>2,'msg'=>__('登录成功'),'url'=>url('home/stores_users_info') ]));
}else{
if(model('stores_users')->login($user,$pwd)===1){
exit(json_encode(['status'=>0,'msg'=>__('您的帐号授权期限已过期,请尽快续费') ]));
}elseif(model('users')->login($user,$pwd)===2){
exit(json_encode(['status'=>0,'msg'=>__('您的帐号还未到服务期限,不能登录') ]));
}else{
exit(json_encode(['status'=>0,'msg'=>__('帐号或密码错误') ]));
}
}
}
return view('login');
}
}
~~~
## 模块
一个典型的应用是由多个模块组成的,这些模块通常都是应用目录下面的一个子目录。
## 操作
一个控制器包含多个操作(方法)。
下面是一个典型的Index控制器的操作方法定义,包含了两个操作方法:
~~~
namespace app\modules\home;
use mysql\db as DB;
class check extends base{
public function index(){
//查询客户表中所有的会员卡号
$all=DB::w()->table('customers')->all();
foreach ($all as $k => $v) {
$indu[$v->id]=$v->number;
}
$data['indust'] = array_filter($indu);
//dump($data['indust']);exit;
$data['id']=$_GET['id'];
$did = model('customers')->one(['id'=>$data['id']]);// 根据get到id 查询 用户表
$data['img']=$did->img;
$data['dd'] = $did->niname;// 查询用户昵称
$data['user'] = $did->nickname;// 查询用户姓名
$data['sex'] = $did->sex;//查询用户性别
$data['number'] = $did->number;//查询用户vip卡号
$data['tel'] = $did->tel;//查询用户手机号码
$data['customers_cost_id'] = $_GET['customers_cost_id'];
return view('check',$data);
}
public function ajax(){
$number=$_POST['number'];
$neel= trim($number);
$neew=model('customers')->one(['number'=>$neel]);
if(!empty($neew)){
echo json_encode($neew);exit;
}else{
echo json_encode('未搜索到该卡号');exit;
}
}
}
~~~
该系统主要围绕角色管理内的五个角色运行的,每个角色在登录前台账号的时候对应不用的页面,不同的岗位,角色不可以添加,但是可以删减。在不同的行业内所需要的角色可能不同,我们在进行其他行业操作的时候务必保证接单人员,服务人员,收银人员三个角色存在,其他角色可保留或者删除。