企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
后台要传递数据给前端,就是把数据在渲染视图时直接写成一个js变量,然后前端js就可以使用这个变量. 具体代码流程: 1在 application\common\controller\Backend.php 中 的初始化函数中 public function \_initialize(),里面就有 ``` //渲染配置信息 $this\->assign('config', $config); ``` 把config这个变量渲染给前端页面; 2在具体的某个控制器php中,把要传递的数据合并入这个config中,使用 protected function assignconfig($name, $value = '') 这个函数. 比如: ``` $this->assignconfig('row', $userInfo); 把用户信息合并入config中,数组下标名称是row. ``` 我们默认统一使用row这个名称作为页面的数据名称; 3前端js设置变量内容,在application\admin\view\common\meta.html 中已经写好了: ``` var require = { config: {$config|json_encode}     }; ``` 把config 转为js数组; 因为,除了可以在require.js加载完毕后,通过`require.config()`方法去配置参数,我们也可以在require.js加载之前,定义一个全局的对象变量 require 来事先定义配置参数。然后在require.js被浏览器加载完毕后,便会自动继承之前配置的参数; FA就是同时使用了加载前和加载后配置require两种方式. 4前端使用Config, FA把config包装了一下: ``` //初始配置 var Config = requirejs.s.contexts.\_.config.config; //将Config渲染到全局 window.Config = Config; ``` requirejs.s.contexts.\_.config是requirejs用于暴露内部配置数据的方法 把config包装成了全局变量,方便所有地方使用,同时把名称第一个字母改成了大写; 最后在实际的控制器js使用时,就可以直接调用了: ``` Config.row ``` 这个row 就是我们的用户信息数组了;