<?php 
/* 
 * This example serves to demonstrate how to develop a custom input that 
 * implements a new type of validation not supported by the main forms class. 
 *  
 * @(#) $Id: test_custom_validation.php,v 1.2 2007/03/02 05:58:27 mlemos Exp $ 
 * 
 */ 
 
    require('forms.php'); 
    require('form_custom_validation.php'); 
 
    $form=new form_class; 
    $form->NAME='custom_validation_form'; 
    $form->METHOD='POST'; 
    $form->ACTION=''; 
    $form->InvalidCLASS='invalid'; 
    $form->ShowAllErrors=0; 
    $form->debug='trigger_error'; 
    $form->AddInput(array( 
        'TYPE'=>'text', 
        'ID'=>'first', 
        'NAME'=>'first', 
        'LABEL'=>'<u>F</u>irst name', 
        'ACCESSKEY'=>'F', 
        'ValidateAsNotEmpty'=>1, 
        'ValidationErrorMessage'=>'It was not specified a valid first name.' 
    )); 
    $form->AddInput(array( 
        'TYPE'=>'text', 
        'ID'=>'second', 
        'NAME'=>'second', 
        'LABEL'=>'<u>S</u>econd name', 
        'ACCESSKEY'=>'S', 
        'ValidateAsNotEmpty'=>1, 
        'ValidationErrorMessage'=>'It was not specified a valid second name.' 
    )); 
 
    /* 
     *  Add a custom input that will be used only for validation purposes 
     */ 
    $error=$form->AddInput(array( 
        'TYPE'=>'custom', 
        'ID'=>'validation', 
 
        /* 
         *  Specify the custom plug-in input class name. 
         */ 
        'CustomClass'=>'form_custom_validation_class', 
 
        /* 
         *  Specify some custom parameters specific of this plug-in input 
         */ 
        'FirstInput'=>'first', 
        'FirstValidationErrorMessage'=>'The first name is contained in the second name.', 
        'SecondInput'=>'second', 
        'SecondValidationErrorMessage'=>'The second name is contained in the first name.', 
    )); 
 
    /* 
     *  If something went wrong, probably due to missing or invalid parameters, 
     *  it is safer to exit the script so the rest of the script does not execute 
     */ 
    if(strlen($error)) 
        die('Error: '.$error); 
 
    $form->AddInput(array( 
        'TYPE'=>'submit', 
        'VALUE'=>'Submit', 
        'NAME'=>'doit' 
    )); 
 
 
/* 
 * The following lines are for testing purposes. 
 * Remove these lines when adapting this example to real applications. 
 */ 
    if(defined("__TEST")) 
    { 
        if(IsSet($__test_options["ShowAllErrors"])) 
            $form->ShowAllErrors=$__test_options["ShowAllErrors"]; 
    } 
 
    $focus='first'; 
    $form->LoadInputValues($form->WasSubmitted('doit')); 
    $verify=array(); 
    if($form->WasSubmitted('doit')) 
    { 
        if(($error_message=$form->Validate($verify))=='') 
            $doit=1; 
        else 
        { 
            $doit=0; 
            $error_message=HtmlEntities($error_message); 
            Reset($verify); 
            $focus=Key($verify); 
        } 
    } 
    else 
    { 
        $error_message=''; 
        $doit=0; 
    } 
 
    if(!$doit) 
        $form->ConnectFormToInput($focus, 'ONLOAD', 'Focus', array()); 
 
    $onload=HtmlSpecialChars($form->PageLoad()); 
 
?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
<head> 
<title>Test for Manuel Lemos' PHP form class using a custom validation plug-in input</title> 
<style type="text/css"><!-- 
.invalid { border-color: #ff0000; background-color: #ffcccc; } 
// --></style> 
</head> 
<body onload="<?php    echo $onload; ?>" bgcolor="#cccccc"> 
<center><h1>Test for Manuel Lemos' PHP form class using a custom validation plug-in input</h1></center> 
<hr /> 
<?php 
  if($doit) 
    { 
?> 
<center><h2>OK</h2></center> 
<?php 
    } 
    else 
    { 
        $form->StartLayoutCapture(); 
        $title='Form custom validation plug-in test'; 
        $body_template='form_custom_validation.html.php'; 
        include('templates/form_frame.html.php'); 
        $form->EndLayoutCapture(); 
 
    /* 
     *  The custom validation input must also be added to the form output, 
     *  even though it is not a visible input in the form 
     */ 
        $form->AddInputPart('validation'); 
 
        $form->DisplayOutput(); 
    } 
?> 
<hr /> 
</body> 
</html> 
 
 |