MiniVend form processing is based on an action and a todo. The predefined actions at the first level are:
process process a todo
search form-based search
scan path-based search
order order an item
minimate get access to a database via MiniMate
You can define any action you desire with ActionMap.
The process action has a second todo level called with mv_todo
or mv_doit. The mv_todo takes preference over mv_doit, which can be used to set a default if no mv_todo is set.
The action can be specified either with:
process
will cause a form process action, etc. Examples:
<FORM ACTION="/cgi-bin/simple/search" METHOD=POST>
<INPUT NAME=mv_searchspec>
</FORM>
The above is a complete search in MiniVend -- it causes a simple text
search of the default products database(s). Normally you don't
use hard-coded paths, but use a minivend tag to specify it for portability:
<FORM ACTION="[area search]" METHOD=POST>
<INPUT NAME=mv_searchspec>
</FORM>
You will often see the tag [process] in MiniVend forms. The above can be called equivalently with:
<FORM ACTION="[process]" METHOD=POST>
<INPUT TYPE=hidden NAME=mv_todo VALUE=search>
<INPUT NAME=mv_searchspec>
</FORM>
<FORM ACTION="[area foo]" METHOD=post>
<INPUT TYPE=hidden NAME=mv_action VALUE=search>
<INPUT NAME=mv_searchspec>
</FORM>
The page name will be used to set mv_nextpage if it is not otherwise defined; if mv_nextpage is present in the form it will be ignored.
The second level todo for the process action has these defined by default:
search Trigger a search
submit submit a form for validation (and possibly a final order)
go Go to C<mv_nextpage>
return Go to C<mv_nextpage>
set Update a database table
refresh Go to C<mv_orderpage|mv_nextpage> and check for
ordered items
cancel Erase the user session
If you define a page name as an action with ActionMap, or use of MiniVend's predefined action process, it will cause form processing. first level is setting the special page
name process, or speciis set to do a form process, the for MiniVend form can be used for any number of actions. The actions
are mapped by the ActionMap directive in the catalog configuration file, and are selected on the form
with either the mv_todo or mv_doit
variables.
To set a default action for a process form, set the variable mv_doit as a hidden variable:
<INPUT TYPE=hidden NAME=mv_doit VALUE=refresh>
When the mv_todo value is not found, the refresh action defined in mv_doit will be used instead.
More on the defined actions:
mv_order_item, looking for on-the-fly items if that is defined, then updates the
shopping cart with any changed quantities or options. Finally updates the
user variables and returns to the page defined in mv_orderpage or
mv_nextpage (in that order of preference).
If there is an order profile defined, the form will be checked against the
definition in the order profile and submitted if the pragma
&final is set to yes. If &final is set to no (the default), and the check succeeds, the user will be routed to the
MiniVend page defined in mv_successpage, or mv_nextpage. Finally, if the
check fails, the user will be routed to mv_failpage or mv_nextpage in that
order.