-
-
Notifications
You must be signed in to change notification settings - Fork 46.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Documentation improvement - Form.Item messageVariables #32115
Comments
Hello @Smoovsky. We totally like your proposal/feedback, welcome to send us a Pull Request for it. Please send your Pull Request to proper branch (feature branch for the new feature, master for bugfix and other changes), fill the Pull Request Template here, provide changelog/TypeScript/documentation/test cases if needed and make sure CI passed, we will review it soon. We appreciate your effort in advance and looking forward to your contribution! 你好 @Smoovsky,我们完全同意你的提议/反馈,欢迎直接在此仓库 创建一个 Pull Request 来解决这个问题。请将 Pull Request 发到正确的分支(新特性发到 feature 分支,其他发到 master 分支),务必填写 Pull Request 内的预设模板,提供改动所需相应的 changelog、TypeScript 定义、测试用例、文档等,并确保 CI 通过,我们会尽快进行 Review,提前感谢和期待您的贡献。 |
@afc163 这个messageVariables 我没有get他的使用点,我自己也没有使用过 ,我简单的看了下源码,更觉得他是修改原message的模板变量,一旦你自定义的message,刚会失效; 当然 如果你自定义了 validateMessages ,效果也是一样的 ,例如这位同学的例子: 因为这里的模板改成了 another ,所以 自定义messageVariables变量名也要改成another,提示的信息就是 good is required。 |
这个是因为有些Form.Item是没有label的 但是做表单校验的时候需要使用label 通过这个属性我就可以免去自己写校验的麻烦了 |
@729993031 可否提供一些比较详细的使用场景 |
以上我是我个人认为 可用的场景 |
因为很多情况下产品要求是不能展示label这个属性给用户的,而antd需要使用到这个属性作为校验的提示, 通过传入messageVariables 可以避免我自己去写校验提示 |
我看了你的例子,我想我跟你的理解是 一致的 ,即这个messageVariables 主要用于校验信息的验证;比如使用已经默认 name 或是重写vilidatemessage 重新设置验证模板 |
嗯 是的 @DaoxingHuang |
@729993031 有个问题,你的第一个国家能取到label的信息? 逻辑上 rule中存在message会被覆盖 |
我把label传到了messageVariables 里面去了 因为这里的国家是不允许显示label给用户的 我只是传递给rule做校验用 |
我到现在才知道message是支持 "'${name}' 是必选字段" 这个语法的 我之前一直以为他只支持静态的语法, 我觉得这个可以通过在文档中注明或者引导一下用户 |
对的,支持 ,本质 就是代换内部的defaultValidateMessages 模板,不仅仅name,所以 默认message 中的模板值都可以替换 但现在对你这个例子的问题是 如果 rules 里设置了 message ,其实 messageVariables里面的变量是不生效的 ,所以你的例子里的那个"�国家" 是有message的,所以按现在的逻辑应该验证信息应该显示的是:”请选择‘${label}’“,而不是你例子里显示的 "请选择国家",所以麻烦你再辛苦确认下。你可以仔细看下我贴的代码。 或是托管下代码 ,我看下 |
好的 多谢。我看 下,主要是版本问题,我的是 4.16.13 ,这个版本是不正常的 ,最新的4.17.0-alpha.3是OK的 |
<Form>
<Form.Item messageVariables={{ myVar: 'Cumstom Msg' }} name='userName' label="User Name" rules={[{required: true, message: '${myVar} is required'}]}>
<Input />
</Form.Item>
<Form.Item messageVariables={{ label: 'Name' }} name='userName' label="User Name" rules={[{required: true, message: '${label} is required'}]}>
<Input />
</Form.Item>
<Form.Item name='userName' label="User Name" rules={[{required: true, message: '${label} is required'}]}>
<Input />
</Form.Item>
<Form.Item name='userName' rules={[{required: true, message: '${label} is required'}]}>
<Input />
</Form.Item>
<Form.Item name='nickName' label={<span>Nickname</span>} rules={[{required: true, message: '${label} is required'}]}>
<Input />
</Form.Item>
<Form.Item name='nickName' label={'Nickname'} rules={[{required: true, message: '${label} is required'}]}>
<Input />
</Form.Item>
<Form.Item>
<Button type="primary" htmlType="submit">
Submit
</Button>
</Form.Item>
</Form>
如果设置了 @afc163 这个文案真的不好写,感觉非常BUG。如果使用 模板字符串中定义的变量如 label ,name ,各种让人困惑,虽然文案可以说明.而且 antd 自己定义的 defaultValidateMessages 与 field-form定义占位符的又不一样,情况就更复杂,没有搞清楚逻辑的 ,估计会一头雾水,我上面的例子你可以看下,这个还不包括自定义 validateMessages 和 通过设置ConfigProvider locale={'en-US'} 来说明的。 |
如果想常规用的要么就改实现方式,要么就提示用户 哪些不能用作变量名 |
4.16.13 之前的版本还好一点,当然也有一点BUG,4.17 这个我就不知道咋解释了 |
I would try to summarize the result and put them in the doc ! |
What problem does this feature solve?
To make the documentation less confusing
What does the proposed API look like?
The current doc states here :
Something like:
would make more sense
The text was updated successfully, but these errors were encountered: