Page Request
Templating System : API Reference
Summary
Transform, validate and report errors in the query parameters
associated with a page request.
This API is an alternative to ad_page_contract
which should usually be preferred if you have ACS installed.
Methods
template::request create
Initialize the data structure to store request parameters. Should
be called at the start of any page that takes request parameters.
template::request set_param name
-datatype datatype
-multiple
-optional
-validate { { expression } { message } }
Validates request parameter values and then sets a local variable.
Values are transformed if a transformation procedure exists for the
specified datatype (i.e. the components of a date are
assembled into a single structure).
- Options for datatype are the same as for form elements.
- The multiple switch indicates that more than one value
may be submitted. The local variable set by the procedure will
be a list.
- The optional switch indicates that the parameter value may be
empty or missing. A value is assumed to be required if this switch
is not specified.
- The validate switch may be used to perform simple
custom validation of each parameter value. expression
must be a block of arbitrary Tcl code that evaluates to 1
(valid) or 0 (not valid). The variable $value may be
used in the expression to reference the parameter value.
message is simply a string
containing a message to return to the user if validation fails.
The variables $value and $label may be used in
the message to reference the parameter value and label (or name if
no label is supplied).
template::request get_param name
Returns the value (or values if the multiple is used) of
the named parameter.
template::request is_valid error_url
Boolean procedure for determining whether any validation errors occurred
while setting request parameters.
- error_url is the location of the template to use for
reporting request errors. The default is
/ats/templates/messages/request-error if no URL is
specified. To report request errors in the template of the page
itself, use self for the URL.
Example
request create
request set_param state_abbrev -datatype keyword -validate {
{ regexp {CA|HI|NV} $value }
{ Invalid state abbreviation $value. }
}
request set_param start_date -datatype date
request set_param user_id -datatype integer -multiple
if { ! [request is_valid "/mytemplates/request-error"] } { return }
...
Note(s)
- Error reporting templates may reference the requesterror
array to access error messages for each parameter.
- The request API provides a simple mechanism for processing
request parameters. It is not intended as a replacement to
ad_page_contract for sites built on the ArsDigita
Community System.