element-ui表单验证不提供message参数如何实现提示信息国际化?

发布于 2022-09-11 20:45:53 字数 430 浏览 17 评论 0

项目使用 element-uivue-i18n来做验证和国际化,在配置表单验证的时候我到一个问题,能不能在设置el-form表单验证的rules属性的时候,规则里面不设置message属性可以自动实现国际化(类似jquery.validate)?

如下:

rules: {
    //, message: '姓名不能为空'
    Name: [{ required: true, trigger: 'blur' }],
},

我希望可以不设置message属性来实现国际化(配合vue-i18n),毕竟错误提示信息格式都一样,每个地方写太费事了。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

苍风燃霜 2022-09-18 20:45:53

不设置message没试过,我是用循环来生成rules规则的,你可以试试循环的时候用vue-i18n对message进行转换

    // 初始化验证数据
    initRules () {
      const obj = {},
        fieldList = this.formInfo.fieldList
      // 循环字段列表
      for (let item of fieldList) {
        let type = item.type === 'select' ? '选择' : '输入'

        if (item.required) {
          if (item.rules) {
            obj[item.value] = {
              required: item.required,
              validator: item.rules,
              trigger: 'blur'
            }
          } else {
            obj[item.value] = {
              required: item.required,
              message: '请' + type + item.label,
              trigger: 'blur'
            }
          }
        }
      }
      this.formInfo.rules = obj
    },
清音悠歌 2022-09-18 20:45:53

把校验规则rules放在computed当中即可。

clipboard.png
原理:在data里rules中的$t()已经将结果返回,依赖收集监听的也是返回的这个结果,当切换语言的时候$t()并没有被依赖收集而不会发生更新;而在computed当中rules会被deep收集依赖,当语言环境切换时this.$t()被重新赋值而被监听触发set,页面自然就更新了。

彼岸花ソ最美的依靠 2022-09-18 20:45:53

就是切换中英文时候 会触发表单的验证 这个你们怎么处理的

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文