Operation Manual

571
USING DREAMWEAVER
Making pages dynamic
Last updated 3/28/2012
The loop directive accepts a comma-separated list of parameter arrays as arguments. In this case, parameter array
arguments allow a user to supply multiple values for a single parameter. The repeating text is duplicated n times, where
n is the length of the parameter array arguments. If more than one parameter array argument is specified, all the arrays
must have the same length. On the ith evaluation of the loop, the ith elements of the parameter arrays replace the
associated parameter instances in the code block.
When you create a dialog box for the server behavior, you can add a control to the dialog box that lets the page designer
create parameter arrays. Dreamweaver includes a simple array control that you can use to create dialog boxes. This
control, called Text Field Comma Separated List, is available through the Server Behavior Builder. To create user
interface elements of greater complexity, see the API documentation to create a dialog box with a control to create
arrays (a grid control, for example).
You can nest any number of conditionals or a loop directive within a conditional directive. For example, you can
specify that if an expression is true to execute a loop.
The following example shows how such repeating code blocks can be used to create server behaviors (the example is a
ColdFusion behavior used to access a stored procedure):
<CFSTOREDPROC procedure="AddNewBook"
datasource=#MM_connection_DSN#
username=#MM_connection_USERNAME#
password=#MM_connection_PASSWORD#>
<CFPROCPARAM type="IN" dbvarname="@CategoryId" value="#Form.CategoryID#"
cfsqltype="CF_SQL_INTEGER">
<CFPROCPARAM type="IN" dbvarname="@ISBN" value="#Form.ISBN#"
cfsqltype="CF_SQL_VARCHAR">
</CFSTOREDPROC>
In this example, the CFSTOREDPROC tag can include zero or more CFPROCPARAM tags. However, without support for the
loop directive, there is no way to include the
CFPROCPARAM tags within the inserted CFSTOREDPROC tag. If this were to
be created as a server behavior without the use of the loop directive, you would need to divide this example into two
participants: a main
CFSTOREDPROC tag, and a CFPROCPARAM tag whose participant type is multiple.
Using the loop directive, you can write the same procedure as follows:
<CFSTOREDPROC procedure="@@procedure@@"
datasource=#MM_@@conn@@_DSN#
username=#MM_@@conn@@_USERNAME#
password=#MM_@@conn@@_PASSWORD#>
<@ loop (@@paramName@@,@@value@@,@@type@@) @>
<CFPROCPARAM type="IN"
dbvarname="@@paramName@@"
value="@@value@@"
cfsqltype="@@type@@">
<@ endloop @>
</CFSTOREDPROC>
Note: New lines after each “@>” are ignored.
If the user entered the following parameter values in the Server Behavior Builder dialog box:
procedure = "proc1"
conn = "connection1"
paramName = ["@CategoryId", "@Year", "@ISBN"]
value = ["#Form.CategoryId#", "#Form.Year#", "#Form.ISBN#"]
type = ["CF_SQL_INTEGER", "CF_SQL_INTEGER", "CF_SQL_VARCHAR"]
The server behavior would insert the following run-time code in the page: