# 实现方式综述
---
### 为什么要后台操控前台
考虑下面的问题
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配置