payload-cms

Payloadcms validation bug


I'm using Payloadcms 1.11.2 i'm trying to validate a field with number type using Regexp it seems that the validation function does not work correctly since it show error message for correct values this happen when i re-click the save button more then one time

const card: GlobalConfig = {
  slug: "card",
  fields: [
    {
      type: "tabs",
      tabs: [
        {
          label: "labels",
          fields: [
            {
              type: "text",
              name: "explore",
              required: true,
              localized: true,
            },
            {
              type: "text",
              name: "other",
              required: true,
              localized: true,
            },
          ],
        },
        {
          label: "info",
          fields: [
            {
              type: "number",
              name: "issue_year",
              label: "year of issue",
              required: true,
              validate: (val, args) => {
                const pattern = /20[2-9][/\d]/g;

                if (val) {
                  if (pattern.test(val.toString())) {
                    return true;
                  } else {
                    return "invalid year of issue";
                  }
                } else {
                  return true;
                }

              },
            },
          ],
        },
      ],
    },
  ],
};

Any help please


Solution

  • I tried to recreate your issue, but it appears to validate as expected for me.

    The following code works for me:

    {
      type: 'number',
      name: 'issue_year',
      label: 'year of issue',
      required: true,
      validate: (val) => {
        if (!val) return true;
        const pattern = /20[2-9][/\d]/g;
        return pattern.test(val.toString()) || 'invalid year of issue';
      },
    }