Validating With Profiles
Advanced constraint profiles for targeted validation scenarios
Constraint profiles (introduced in CBValidation 2.0) allow you to validate specific subsets of fields for different scenarios. This enables flexible validation workflows where different operations require different validation rules.
Overview
Instead of validating all constraints every time, profiles let you:
Validate only relevant fields for specific operations
Improve performance by skipping unnecessary validations
Create context-specific validation rules (registration vs. update vs. password change)
Support multi-step forms and wizards
Basic Profile Definition
Define profiles using the this.constraintProfiles struct in your object:
class {
property name="firstName" type="string";
property name="lastName" type="string";
property name="email" type="string";
property name="password" type="string";
property name="confirmPassword" type="string";
this.constraints = {
firstName: { required: true, size: "2..50" },
lastName: { required: true, size: "2..50" },
email: { required: true, type: "email" },
password: { required: true, size: "8..50" },
confirmPassword: { required: true, sameAs: "password" }
};
this.constraintProfiles = {
registration: "firstName,lastName,email,password,confirmPassword",
update: "firstName,lastName,email",
passwordChange: "password,confirmPassword"
};
}Using Profiles
Every validation method accepts a profiles argument:
Complex Profile Scenarios
Multi-Step Registration Wizard
For complex forms split across multiple steps:
API Endpoint Profiles
Different API endpoints often need different validation rules:
API Integration Patterns
RESTful API Validation
Use profiles to match your API endpoints:
Role-Based Validation
Different user roles may have different validation requirements:
Performance Considerations
Profile Selection Strategy
Choose profiles wisely to optimize performance:
Caching Constraint Definitions
For high-performance scenarios, cache constraint lookups:
Profile Size Optimization
Keep profiles focused and avoid overlap:
Best Practices
1. Use Descriptive Profile Names
2. Group Related Operations
3. Document Profile Usage
4. Validate Profile Efficiency
Monitor which profiles are used most frequently and optimize accordingly:
See Also
Validating Constraints - Main validation guide
A-la-carte Constraints - Dynamic constraint definition
Shared Constraints - Reusable constraint sets
Custom Validators - Building custom validation logic
Last updated
Was this helpful?