# zero-cms **Repository Path**: zeroxxmmbm/zero-cms ## Basic Information - **Project Name**: zero-cms - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-03-21 - **Last Updated**: 2024-03-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 简介 * 本项目参考林间有风官方团队项目 lin-cms-spring-boot 项目开发,完全适配lin-cms-vue v0.4.2 * 本CMS框架全程由本人个人兴趣爱好编写,非官方团队正式项目 官方文档:https://doc.cms.talelin.com/ * 本项目是基于Hyperf 2.2版本开发的 Lin CMS 后端实现 * 前端为 林间有风官方打造的 lin-cms-vue支撑 # 使用须知 Hyperf2.2是一个高性能协程框架,广大开发者们使用前建议先熟悉该框架,使用前请先详细了解 框架开发注意事项以免出现开发过程中的各种BUG、如私有属性数据被纂改与内存溢出等问题 关于权限、行为日志等相关定义等可参考官方springboot文档 https://doc.cms.talelin.com/server/spring-boot/ # 项目总结、关于lin-cms的错误码理解以及个人建议 项目整体错误码定义 1、已知错误、参数错误等 交由前端修正 Http状态码为 400 2、用户令牌无效、无权限、异常等 401 不同错误 code 3、路由请求错误 找不到资源 资源结果为空 404 数据列表、分页获取为空时 项目返回空数组 4、用户操作未知错误 如:用户注册用户名符合规范但并未知是否已存在, 用户删除用户组但不知是否用户组下是否已被分配 由系统检测的错误 此类操作被后端禁止 http状态码为 403 用户操作被禁止 5、正常请求数据 httpCode为200 code为 10000以内的数字0-9999均为返回正常请求 6、系统错误 程序异常引发的系统异常 500 所有返回code在9999 以上为自定义错误 需由前端弹出提示后台返回的错误信息 9999以下均是成功 个人建议:针对第三点路由信息 比如路径请求错误可为404,而针对数据返回空资源、个人还是比较 喜欢使用200状态码 返回空数组或字符串 大家可根据自己喜欢设计 # 简单验证器注解 @ParamValid() 多组验证使用 value rule数量一致匹配 value={"count","page"},rule={"required|min:1|max:30","required"} # 自定义验证规则 ValidatorFactoryResolvedListener process 方法下添加 # 遇到的问题以及相关解决方案 1、lin-cms自定义分页功能 框架分页功能无法按需求做自定义分页 只能自己实现Paginator类 2、验证器 自定义验证规则 如使用手动 $this->validatorFactory 无法正常获取规则 需使用 ValidatorFactoryResolved获取验证器的工厂方法 3、使用FormRequest验证时 如PUT接口当path路径上需对id参数验证时,可在rules定义在相对应的参数 但对path上的参数不可定义required验证,否则会导致验证问题,作为path的参数本身就是必传 4、因与laravel一样自定义 二次输入密码内置验证的字段名是固定的 所以需要修改底层 /vendor/hyperf/validation/src/Concerns/ValidatesAttributes trait片段 针对207行代码进行改进,补充重复输入密码可自定义的字段参数:修改代码如下 但保留原有机制 public function validateConfirmed(string $attribute, $value,array $parameters): bool { if(!$parameters){ $parameters = [$attribute . '_confirmation']; } return $this->validateSame($attribute, $value, $parameters); } 5、跟定义路由文件一样需要注意保持方法与放置的先后顺序,以免路由解析问题 如:group/all group/{id} 前者方法一定要定义在前面 6、关于行为日志部分 也是进行了template模板字符串的,但可能与官方有不一致,详细看下第7点 7、行为日志 除了user支持对象相关属性 request 目前支持 三种属性 body | header | query (header) 暂时仅记录'content-type'、'host'、'content-length' response 目前支持 三种属性 body | header | charset (header) 暂时仅记录'content-type' 同时个人建议可考虑将lin_log message字段属性修改成text 8、使用OSS上传文件报错,但不影响OSS功能正常上传图片,如需解决可参考官方解决方案 PHP Notice: iconv(): Wrong charset, conversion from `GBK' to `UTF-8//IGNORE' is not allowed in /data/project/hyperf-skeleton/vendor/aliyuncs/oss-sdk-php/src/OSS/OssClient.php on line 3077 解决方案:https://hyperf.wiki/2.2/#/zh-cn/quick-start/questions?id=oss-%e4%b8%8a%e4%bc%a0%e7%bb%84%e4%bb%b6%e6%8a%a5-iconv-%e9%94%99%e8%af%af 9、lin-vue 图片多图上传组件不会自动扩充 参考解决方案:临时解决方案: https://github.com/TaleLin/lin-cms-vue/issues/498 src/component/base/upload-image/index.vue setImgInfo中 this.itemList[index] = createItem(imgInfoList[0], this.itemList[index]) 替换为 this.itemList[index] = createItem(imgInfoList[0]) #运行前准备 以上第4点代码需在底层代码做改进,否则需调整前端lin-vue关于重复密码的输入参数名 migrations -> resource 下 lin-cms.sql导入