uni-app schema2code生成的代码中 表单校验器中占位符未正常格式化

发布于 1周前 作者 ionicwang 来自 Uni-App

uni-app schema2code生成的代码中 表单校验器中占位符未正常格式化

产品分类:uniCloud/App

操作步骤:

  • schema2code

预期结果:

  • 正常

实际结果:

  • 不正常

bug描述:

HBuilderX3.9.8 schema2code生成的代码中,表单的校验器未根据schema的配置生成对应的提示语,提示语中的占位符未能正常的格式化,并替换成对应的数据。

image


4 回复

更正一下,应该是在表单进行校验时,title不能正常识别


经过Debug发现和查看uni-forms的validate.js代码发现,数据库的schema不应该使用{title}占位符,而是用{label}代替。 经比较,要么官方的文档有误,要么validate.js有Bug,要么schema2code生成的代码有Bug。三者中任意一个修复,都可以解决这个问题。



收到,会按照文档说明 修复 支持 title 占位符

uni-app 中使用 schema2code 生成代码时,如果表单校验器中的占位符未正常格式化,可能是由于以下几个原因导致的。以下是一些可能的解决方案:

1. 检查 schema 定义

确保在 schema 定义中,字段的 labelplaceholder 属性正确设置。例如:

{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "label": "用户名",
      "placeholder": "请输入用户名"
    }
  }
}

2. 校验规则中的占位符

schema 中定义的校验规则中,确保占位符正确使用。例如:

{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "label": "用户名",
      "placeholder": "请输入用户名",
      "rules": [
        {
          "required": true,
          "message": "{label}不能为空"
        },
        {
          "minLength": 6,
          "message": "{label}长度不能少于6个字符"
        }
      ]
    }
  }
}

3. 自定义校验器

如果默认的校验器无法满足需求,可以自定义校验器。在自定义校验器中,确保占位符正确格式化。例如:

export default {
  data() {
    return {
      formData: {
        username: ''
      },
      rules: {
        username: [
          { required: true, message: '用户名不能为空', trigger: 'blur' },
          { minLength: 6, message: '用户名长度不能少于6个字符', trigger: 'blur' }
        ]
      }
    };
  }
};

4. 检查 schema2code 版本

确保使用的 schema2code 版本是最新的,旧版本可能存在一些 bug 或未实现的功能。

5. 手动格式化占位符

如果自动格式化不生效,可以手动在生成的代码中格式化占位符。例如:

export default {
  data() {
    return {
      formData: {
        username: ''
      },
      rules: {
        username: [
          { required: true, message: this.$t('username.required'), trigger: 'blur' },
          { minLength: 6, message: this.$t('username.minLength'), trigger: 'blur' }
        ]
      }
    };
  }
};

6. 使用 i18n 国际化

如果项目支持国际化,可以使用 i18n 来管理占位符和校验信息。例如:

export default {
  data() {
    return {
      formData: {
        username: ''
      },
      rules: {
        username: [
          { required: true, message: this.$t('validation.username.required'), trigger: 'blur' },
          { minLength: 6, message: this.$t('validation.username.minLength'), trigger: 'blur' }
        ]
      }
    };
  }
};

7. 调试和日志

在开发过程中,可以通过调试和日志来检查占位符是否正确传递和格式化。例如:

console.log(this.rules.username[0].message); // 检查占位符是否正确
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!