label
为错误信息中的 {label} 参数设置字段名称 —— 类似 Laravel 的 :attribute。
签名
ts
function label<T>(schema: Schema<T>, text: string): Schema<T>参数
| 参数 | 类型 | 说明 |
|---|---|---|
schema | Schema<T> | 字段的 Schema |
text | string | 字段名称 |
注意事项
- 内置信息不使用
{label}—— 请通过setMessages或messages选项在自己的文本中添加。 - 没有
label时,{label}等于字段名:email,数组元素为0。 - 名称只作用于该字段本身的错误,不作用于嵌套字段。
- 对于多语言应用,使用
validate的labels选项按语言分别传入名称更方便。
示例
在 Schema 中设置名称
ts
const Signup = object({
email: label(pipe(string(), email()), 'Email'),
password: label(pipe(string(), minLength(8)), 'Password'),
});
setMessages({ required: '{label} is required', minLength: '{label} must be at least {min} characters' });
validate(Signup, { password: '123' }).errors;
// { email: 'Email is required', password: 'Password must be at least 8 characters' }不同语言的名称
ts
const labels = {
ru: { email: 'Почта', 'address.city': 'Город' },
en: { email: 'Email', 'address.city': 'City' },
};
validate(Order, body, { messages: locales[lang], labels: labels[lang] });