Skip to content

label ​

Задаёт название поля для параметра {label} в сообщениях об ошибках — как :attribute в Laravel.

Сигнатура ​

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

Параметры ​

ПараметрТипОписание
schemaSchema<T>Схема поля
textstringНазвание поля

Особенности ​

  • Встроенные сообщения не используют {label} — добавьте его в свои тексты через setMessages или опцию messages.
  • Без label параметр {label} равен имени поля: email, 0 для элемента массива.
  • Название действует только на ошибки самого поля, а не на вложенные поля.
  • Если сайт на нескольких языках, удобнее передавать названия опцией labels у validate — отдельно для каждого языка.

Примеры ​

Названия в схеме ​

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] });

См. также ​