githubEdit

Form Validation

Validate forms using ColdBox's cbValidationarrow-up-right 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:

circle-info

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

circle-exclamation

Was this helpful?