Skip to content
Samuel Knowlton edited this page Nov 29, 2017 · 5 revisions

Our active entity object will also give you access to our validation engine by giving your ORM entities the following functions:

/**
* Validate the ActiveEntity with the coded constraints -> this.constraints, or passed in shared or implicit constraints
* The entity must have been populated with data before the validation
* @fields.hint One or more fields to validate on, by default it validates all fields in the constraints. This can be a simple list or an array.
* @constraints.hint An optional shared constraints name or an actual structure of constraints to validate on.
* @locale.hint An optional locale to use for i18n messages
* @excludeFields.hint An optional list of fields to exclude from the validation.
*/
boolean function isValid(string fields="*", any constraints="", string locale="", string excludeFields="");

/**
* Get the validation results object.  This will be an empty validation object if isValid() has not being called yet.
*/
coldbox.system.validation.result.IValidationResult function getValidationResults();

Important In order for validation to work, WireBox ORM entity injection must be enabled first!

  • ColdBox ORM Entity Injection
  • WireBox Standalone ORM Entity Injection

This makes it really easy for you to validate your ORM entities.

Sample:

import coldbox.system.orm.hibernate.*;
component persistent="true" extends="ActiveEntity"{
	// Properties
	property name="firstName";
	property name="lastName";
	property name="email";
	property name="username";
	property name="password";

	// Validation Constraints
	this.constraints = {
		"firstName" = {required=true}, 
		"lastName" = {required=true},
		"email" = {required=true,type="email"},
		"username" = {required=true, size="5..10"},
		"password" = {required=true, size="5..10"}
	};
}

Handlers Sample:

component{
	
        property name="Messagebox" inject="id:messagebox@cbmessagebox";

	function index(event,rc,prc){
		prc.users = entityNew("User").list(sortOrder="lastName asc");
		event.setView("users/list");
	}

	function save(event,rc,prc){
		event.paramValue("id","");
		var user = populateModel( entityNew("User").get( rc.id ) );

		if( user.isValid() {
			user.save();
			flash.put("notice","User Saved!");
			setNextEvent("users.index");
		}
		else{
			Messagebox.error(messageArray=user.getValidationResults().getAllErrors());
			editor(event,rc,prc);
		}

	}

	function editor(event,rc,prc){
		event.paramValue("id","");
		prc.user = entityNew("User").get( rc.id );
		event.setView("users/editor");
	}

	function delete(event,rc,prc){
		event.paramValue("id","");
		entityNew("User").deleteById( rc.id );
		flash.put("notice","User Removed!");
		setNextEvent("users.index");
	}
}

Please refer to the ORM:BaseORMService for all the cool methods and functionality you can use with Active Entity. Like always, refer to the latest CFC Docs for methods and arguments.

Clone this wiki locally