# validate Simple validation modifier to make it super easy to add validations to your form elements. **Please note:** You probably should be using one of our many (soon) Form Components like `` instead of using this. If you have something more custom that needs validation support, then read on! The `validate` modifier primarily requires a `validations` argument passing to it. The shape of this is an object containing property/validation pairs. Generally you will only need to pass one of these, and in this case the property is also used for naming any resulting errors. For example `Name` will result in `{Name: 'Name error message'}` being thrown/called/passed to the state's context or the `onchange` event. In the future we are looking to support validation based on other properties in the passed `item` positional argument, hence the slightly more complicated shape of this `validations` argument. Validation objects currently contain 2 properties: `test` and `error`. `test` is used to provide a Regular Expression used to validate the users' input, and the `error` property is a humanized string which is provided to the state's context/onchange event. We may add support for a `success` message in the future for when the validation is in a successful state. Please note: you should only need to use either the `chart` argument or the `onchange` listener, not both. ```hbs preview-template {{#let (hash help='Must be a valid DNS hostname. Must contain 1-64 characters (numbers, letters, and hyphens), and must begin with a letter. Once created, this cannot be changed.' Name=(array (hash test='^[a-zA-Z0-9]([a-zA-Z0-9-]{0,62}[a-zA-Z0-9])?$' error='Name must be a valid DNS hostname.' ) ) ) as |validations|}}
Valid to begin with
{{#if this.validErrors.Name}}
{{this.validErrors.Name.message}} {{/if}}
Invalid to begin with
{{#if this.invalidErrors.Name}}
{{this.invalidErrors.Name.message}} {{/if}}
{{/let}} ``` ## Positional Arguments | Argument | Type | Default | Description | | --- | --- | --- | --- | | `item` | `object` | | An object containing properties to be validated | ## Named Arguments | Argument | Type | Default | Description | | --- | --- | --- | --- | | `validations` | `object` | | Validation shaped object to use for the validation | | `onchange` | `object` | | A function called when the validations state changes form successful to erroneous and vice versa | | `chart` | `object` | | A statechart object following a state/dispatch interface to use as an alternative t onchange |