import * as Yup from 'yup';
export const createProductSchema = Yup.object().shape({
image: Yup.string().required("Sie müssen ein Bild hochladen"),
title: Yup.string().required("Bitte geben Sie den Namen des Produktes ein"),
producer: Yup.string().required("Bitte den Hersteller eingeben"),
categories: Yup.array()
.of(Yup.string())
.min(1, "Bitte geben Sie eine ProduktKategorie ein, als erstes die Hauptkategorie(z.B Herren), dann nur mit Leerzeichen getrennt die Unterkategorie(z.B Sportschuhe)")
.matches(/([A-Za-z]+( [A-Za-z]+)+)/i, "Bitte die Kategorien ohne Komma eingeben. Erst die Hauptkategorie")
.required("Sie müssen eine Kategorie eingeben"),
desc: Yup.string().required("Bitte geben Sie eine Produktbeschrebung ein"),
price: Yup.string().required("Bitte geben Sie den Preis ein"),
currency: Yup.string().required("Bitte geben Sie die Währung ein, als €"),
colors: Yup.array()
.of(Yup.string())
.min(1, "Bitte geben Sie die Farben nur durch Leerzeichen getrennt in englischer Sprache ein")
.matches(/([a-z]+( [a-z]+)+)/i, "Bitte die Farben ohne Komma eingeben. Farben bitte klein schreiben")
.required("Sie müssen eine Farbe eingeben"),
sizes: Yup.array()
.of(Yup.string())
.min(1, "Bitte geben Sie die Größen nur durch Leerzeichen getrennt ein")
.matches(/\s[0-9]+\s[0-9]+\s[0-9]+/, "Bitte die Größen ohne Komma eingeben Am Anfang ein Leerzeichen.")
.required("Sie müssen eine Größe eingeben"),
inStock:Yup.string()
.matches(/[a-z]+ /, "Bitte klein schreiben")
.required("Bitte geben Sie ein, ob das Produkt im Bestand ist, wenn ja dann true, wenn nein, dann false")
})
It appears when you use the of method, the min, matches and required need to be after Yup.string() nested within the of’s ( and ):
categories: Yup.array()
.of(Yup.string()
.min(1, "Bitte geben Sie eine ProduktKategorie ein, als erstes die Hauptkategorie(z.B Herren), dann nur mit Leerzeichen getrennt die Unterkategorie(z.B Sportschuhe)")
.matches(/([A-Za-z]+( [A-Za-z]+)+)/i, "Bitte die Kategorien ohne Komma eingeben. Erst die Hauptkategorie")
.required("Sie müssen eine Kategorie eingeben")
),