Validation
Wires include powerful validations that you can use to validate your Data Properties.
Defining Constraints
You can define constraints within your wires using this.constraints
.
component extends="cbwire.models.Component"{
this.constraints = {
"task": { required: true }
};
// Data Properties
data = {
"task": ""
};
}
Validating
Actions can validate against the defined constraints using validate()
or validateOrFail()
.
validate
Returns a ValidateResult
object.
component extends="cbwire.models.Component"{
// Action
function addTask() {
var result = validate(); // ValidateResult object
if ( !result.hasErrors() ) {
queryExecute( ... );
}
}
}
validateOrFail
Silently fails and prevents further processing of the current Action.
component extends="cbwire.models.Component"{
// Action
function addTask() {
validateOrFail();
queryExecute( ... );
}
}
Validation Manager
You can get a new ValidationManager object to work with, just call getValidationManager()
;
component extends="cbwire.models.Component"{
// Action
function addTask() {
var data = { "email": "[email protected]" };
var validationManager = getValidationManager();
var result = validationManager.validate(
target=data,
constraints={
"email": { required: true, type: "email" }
}
);
}
}
Displaying Errors
Templates can access the ValidationResults object using args.validation
. This includes helpful methods you can use for displaying error messages.
<cfoutput>
<div>
<input wire:model="task" type="text">
<button wire:click="addTask">Add</button>
<cfif args.validation.hasErrors( "task" )>
<cfloop array="#args.validation.getAllErrors( "task" )#" index="error">
<div>#error#</div>
</cfloop>
</cfif>
</div>
</cfoutput>
Last updated
Was this helpful?