Skip to content

label ​

为错误信息中的 {label} 参数设置字段名称 —— 类似 Laravel 的 :attribute。

签名 ​

ts
function label<T>(schema: Schema<T>, text: string): Schema<T>

参数 ​

参数类型说明
schemaSchema<T>字段的 Schema
textstring字段名称

注意事项 ​

  • 内置信息不使用 {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] });

另请参阅 ​