🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
>[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; } } } ~~~ 该系统主要围绕角色管理内的五个角色运行的,每个角色在登录前台账号的时候对应不用的页面,不同的岗位,角色不可以添加,但是可以删减。在不同的行业内所需要的角色可能不同,我们在进行其他行业操作的时候务必保证接单人员,服务人员,收银人员三个角色存在,其他角色可保留或者删除。