Index  Up  <<  >>  


Advanced Multi-level Order Pages

An unlimited number of order checking profiles can be defined with the OrderProfile directive, or by defining order profiles in scratch variables. This allows a multi-level ordering process, with checking for format and validity at every stage.

As of MiniVend 3.12, you can place a message after the format check requirement.

Specifications take the form of an order page variable (like name or address), followed by an equals sign and one of five check types:

required
A non-blank value is required

mandatory
Must be non-blank, and must have been specified on this form, not a saved value from a previous form

phone
The field must look like a phone number, by a very loose specification allowing numbers from all countries

phone_us
Must have US phone number formatting, with area code

state
Must be a US state, including DC and Puerto Rico.

province
Must be a Canadian province or pre-1997 territory.

state_or_province
Must be a US state or Canadian province.

zip
Must have US postal code formatting, with optional ZIP+4. Also called by the alias us_postcode.

ca_postcode
Must have Canadian postal code formatting. Checks for a valid first letter.

postcode
Must have Canadian or US postal code formatting.

true
Field begins with y, 1, or t (Yes, 1, or True) - not case sensitive

false
Field begins with n, 0, or f (No, 0, or False) - not case sensitive

email
Rudimentary email address check, must have an '@' sign, a name, and a minimal domain

Also, there are four pragmas that can be used to change behavior:

&amp;fatal
Set to '&fatal=yes' if an error should generate the error page.

&amp;final
Set to '&final=yes' if a successful check should cause the order to be placed.

&amp;set
Set a user session variable to a value, i.e. &set=mv_email [value email]. This is usually placed at the end after a &fatal pragma would have caused the process to stop if there was an error -- can also be used to determine pass/fail based on a derived value, as it will cause failure if it evaluates to zero or a blank value.

&amp;return
Causes profile processing to terminate with either a success or failure depending on what follows. If it is non-blank and non-zero, the profile succeeds.

    # Success :)
    &return 1

    # Failure :\
    &return 0

Will ignore the &fatal pragma, but &final is still in effect if set.

As an added measure of control, the specification is evaluated for the special MiniVend tags to provide conditional setting of order parameters. With the [perl] [/perl] capability, quite complex checks can be done. Also, the name of the page to be displayed on an error can be set in the mv_failpage variable.

The following file specifies a simple check of formatted parameters:

 name=required You must give us your name.
 address=required Oops! No address.
 city=required
 state=required
 zip=required
 email=required
 phone_day=phone_us XXX-XXX-XXXX phone-number for US or Canada
 &fatal=yes
 email=email Email address missing the domain?
 &set=mv_email [value email]
 &set=mv_successpage ord/shipping

The profile above only performs the &set directives if all of the previous checks have passed -- the &fatal=yes will stop processing after the check of the email address if any of the previous checks failed.

If you want to place multiple order profiles in the same file, separate them with __END__, which must be on a line by itself.


Index  Up  <<  >>