Page Request
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.
templating\@arsdigita.com