# 實現方式綜述
---
### 為什么要后臺操控前臺
考慮下面的問題
1. 在列表中刪除一條數據后,刷新列表。
2. 在頁面中彈出的dialogA表單頁,提交完表單后,顯示操作成功按鈕,點擊確定按鈕后,關閉表單頁面,并刷父頁面。
3. 類似上述場景(第2條),提交完表,關閉當前表單頁面,并跳轉至新頁面(用dialog方式,或者addtab方式)。
4. 一個更為復雜的場景,A頁面打開(dialog方式)B頁面,B頁面打開(dialog方式)C頁面(內容為一個表單),當C頁面表單提交后,要求C關閉,并且B刷新。并且當B關閉時候A刷新。
5. 在頁面有又一個js函數,當表單提交后,需要執行這個js函數。
>[danger] 這里只是簡單舉出幾個常用的場景,我相信這些通過后臺和前臺代碼的編寫肯定都可以實現,但避免不了代碼重復,更重要的是前臺需要嵌入到更加底層的邏輯中去修改。
### `EpiiAdmin` 可以快速實現以上場景,并且無需寫一句`js`代碼。
#### 舉個例子
例如,在一個列表頁面,刪除一行數據后(后臺刪除),彈出成功提示框,點擊提示框按鈕后,刷新當前頁面(列表)。
```php
public function ajax_del()
{
//操作刪除的邏輯
$cmd = Alert::make()->msg("操作成功")->onOk(Refresh::make()->type("table"));
return JsCmd::make()->addCmd($cmd)->run();
//return JsCmd::make()->addCmd(Alert::make()->msg("操作成功")->onOk(Refresh::make()->type("table")));
}
```
1、 `JsCmd` 為命令管理者,通過`addCmd(cmd)`收集命令(可收集多條命令,如`JsCmd::make()->addCmd($cmd1)->addCmd($cmd2)->run()`),通過`run()`方法傳遞給前臺js執行。
2、 任何一條具體的命令可以通過 `make()` 獲取到實例。如`Alert::make(),Refresh::make()` 等。
3、 任何命令都繼承了`JsCmdCommon`類,而`JsCmdCommon`實現了 `IjsCmd`接口。
![php1]
[php1]:http://epii.gitee.io/static/project/epiiadmin-js/docimg/php1.png
- 簡介/安裝
- 快速搭建一個用戶中心
- Js代碼寫在哪里
- 環境變量Args
- 前臺組件
- Dialog方式打開頁面
- Addtab方式打開頁面
- Alert提醒框
- Confirm確認框
- Prompt輸入框
- 表單Form
- 列表Table/list
- 基礎Table
- 控制Table
- 搜索Table
- 城市選擇city-picker
- 文件上傳組件
- 基礎版本
- 簡單版本
- 更多實用組件
- 后臺
- 實現方式綜述
- 命令管理類JsCmd
- 命令
- Alert命令
- Url命令
- Toast命令
- JsEval命令
- Close命令
- Refresh命令
- CloseAndRefresh命令
- 常用命令的簡化
- 文件上傳
- 后臺基礎
- 后臺進階
- 左側導航badge配置