passports-form-controller
Implements a request pipeline for GET and POST of forms, with input cleaning/formatting and validation.
Usage
Basic usage:
var Form = require('hmpo-form-controller');
var form = new Form({
template: 'form',
fields: {
name: {
validate: 'required'
}
}
});
app.use('/', form.requestHandler());
This won't really be very useful though, since all it will do is render the "form" template on /
and respond to GET and POST requests.
For real-world usage you will probably want to extend the Form class to create your own controllers.
var Form = require('hmpo-form-controller'),
util = require('util');
var MyForm = function (options) {
Form.call(this, options);
};
util.inherits(MyForm, Form);
module.exports = MyForm;
The Form class allows for a number of insertion points for extended functionality:
process
Allows for custom formatting and processing of input prior to validationvalidate
Allows for custom input validationgetValues
To define what values the fields are populated with on GETsaveValues
To define what is done with successful form submissions
All of these methods take three arguments of the request, the response and a callback. In all cases the callback should be called with a first argument representing an error.
getErrors/setErrors
Define how errors are persisted between the POST and subsequent GET of a form step.locals
Define what additional variables a controller exposes to its template
These methods are synchronous and take only the request and response obejct as arguments.