企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 实现方式综述 --- ### 为什么要后台操控前台 考虑下面的问题 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