>[info]MVC是一個設計模式,它強制性的使應用程序的輸入、處理和輸出分開。使用MVC應用程序被分成三個核心部件:模型(M)、視圖(V)、控制器(C),它們各自處理自己的任務。
首先了解一下該系統的整體架構。
## 入口文件
入口文件主要完成:
* 定義框架路徑、項目路徑(可選)
* 定義系統相關常量(可選)
* 載入框架入口文件(必須)
該版本默認入口文件為``public/index.php`` ,內容如下:
~~~
include __DIR__.'/../version.php';
~~~
>[info]入口文件位置的設計是為了讓應用部署更安全,public目錄為web可訪問目錄,其他的文件都可以放到非WEB訪問目錄下面。

## 模型
模型類通常完成實際的業務邏輯和數據封裝,并返回和格式無關的數據。
## 控制器
每個模塊擁有獨立的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;
}
}
}
~~~
該系統主要圍繞角色管理內的五個角色運行的,每個角色在登錄前臺賬號的時候對應不用的頁面,不同的崗位,角色不可以添加,但是可以刪減。在不同的行業內所需要的角色可能不同,我們在進行其他行業操作的時候務必保證接單人員,服務人員,收銀人員三個角色存在,其他角色可保留或者刪除。