myloveGy / yii2-admin

yii2 后台管理模块
BSD 3-Clause "New" or "Revised" License
35 stars 11 forks source link

更多的自由出口 #3

Closed yiqing-95 closed 5 years ago

yiqing-95 commented 5 years ago

逃生通道: 后台功能主要依赖了 dataTable jqGrid 在这两个组件上面做封装 一般api设计的时候 当自身api不足于满足苛刻需求时候 会提供一个特殊通道把底层的功能暴露出来 换言之也就是 自己的api不能把底层的功能给掩盖了 比如yii的db组件 除了自己做的一些额外功能外 还可以暴露底层的Pdo对象: [Yii::$app->db->getXxxPdo()](https://www.yiiframework.com/doc/api/2.0/yii-db-connection#getMasterPdo()-detail) 这个思想就是一个引子 其实我想说其他的东西 😃

就当讨论了 看着玩也行 ^_^

以上就是一些考虑罢了 这个项目还是很不错的 服务端很轻松 特别是在业务简单的情况下 表关系又比较单纯 基本只需要生个AR出来 就没啥事了

如果能提供对复杂用例的 逃生出口 就更好了 . 👍

如果能qq聊更好 没事一起扯扯淡 联系qq: 61391362 😄

yiqing-95 commented 5 years ago

感谢作者解答

至此 基本可能碰到的复杂场景都有方案 感谢作者 开源的奉献 👍

myloveGy commented 5 years ago

预留的自定义处理修改和编辑前置方法beforeSave 可以满足需求, 传递给 beforeSave() 的参数 是表单 serializeArray() 后的数据,是一个数组,因为 js 对对象和数组都是引用传参,所以你函数内部修改数据,会影响函数外部,至于返回可有可无,我的逻辑是只要你不返回false 终止执行,其他返回或者不返回,都是继续执行

beforeSave: function (data) {
    // 需要注意追加数据的格式 "anyKey":"someAdditionalValue"
    data.push({value: "someAdditionalValue", name: "anyKey"});
}

依赖这两个插件,但只是添加了一些预定义配置,附加一些常见操作和处理,并没有隐藏原有API;

  1. 配置问题,可以直接覆盖默认配置, 比如 meTables 的配置, meTables({table: {...}}) 就是 jquery.dataTables 对象
  2. 需要获取原有对象, 比如 var m = meTables({...}); m.table 就是 jquery.dataTables 对象
yiqing-95 commented 5 years ago

好的 感谢回复! 我在push的时候 对推入元素的格式没注意: data.push( { name: "anyKey", value: "anyValue" } ) 而不是: data.push({ "anyKey":"someAdditionalValue" });

myloveGy commented 5 years ago

其他 jquery.datable 的其他插件都可以使用,只是 datatable-editor 样式有点丑,当初没有用!其他插件的话一般样式都要自己去处理了