Form Validation

Validate forms using ColdBox's cbValidation engine. CBWIRE automatically validates components on each request when constraints are defined, and provides helper methods for displaying validation errors.

Installation

Install cbValidation via CommandBox:

box install cbvalidation

Basic Usage

Create a user registration form with validation:

// wires/UserRegistration.bx
class extends="cbwire.models.Component" {
    data = {
        "name": "",
        "email": "",
        "password": "",
        "confirmPassword": ""
    };
    
    constraints = {
        "name": {
            "required": true,
            "requiredMessage": "Name is required",
            "size": "2..50"
        },
        "email": {
            "required": true,
            "requiredMessage": "Email is required",
            "type": "email"
        },
        "password": {
            "required": true,
            "requiredMessage": "Password is required",
            "size": "8..50"
        },
        "confirmPassword": {
            "required": true,
            "sameAs": "password",
            "sameAsMessage": "Passwords must match"
        }
    };
    
    function register() {
        validateOrFail();
        
        // Save user data
        // redirect("/dashboard");
    }
}

Validation Methods

validateOrFail()

Validates data and silently stops function execution if validation fails (does not throw an exception):

validate()

Returns a ValidationResult object for manual error handling:

Error Display Methods

All Errors

Display all validation errors:

Field-Specific Errors

Display errors for specific fields:

Common Constraints

Most frequently used validation constraints:

Constraint
Description
Example

required

Field must have a value

{"required": true}

type

Field must be specific type

{"type": "email"}

size

String length or numeric range

{"size": "8..50"}

min/max

Minimum/maximum value

{"min": 1, "max": 100}

sameAs

Must match another field

{"sameAs": "password"}

regex

Must match regular expression

{"regex": "^[A-Z].*"}

inList

Value must be in list

{"inList": "red,blue,green"}

Advanced Validation

Custom Constraints

Define validation constraints inline:

Conditional Validation

Use requiredIf and requiredUnless for conditional validation:

CBWIRE automatically validates components when constraints are defined. Validation runs on each request before actions execute.

Was this helpful?