<?php
/*
* CONTACT FORM EXAMPLE FOR PTCFORMS.PHP CLASS WITH EVENT HANDLERS
* THIS EXAMPLES REQUIRES THE PTCEVENT COMPONENT
* REMOVE COMMENT FROM LINE 144 FOR UI-PLUGINS
*/
### PARAMETERS FOR THE EXAMPLE ##################
$email_address = 'me@example.com';
$mail_subject = 'TEST CONTACT FORM';
#########################################
require_once( '../PtcForm.php' );
require_once( '../PtcEvent.php' );
/* EXTENDING THE CLASS TO HANDLE EVENTS */
class contactForm extends PtcForm
{
/* OVERRIDING DEFAULT OPTIONS PROPERTY */
protected $_options = array
(
'add_class_validator' => true ,
'form_width' => '400px' ,
'labels_align' => 'right' ,
'spacer_height' => '10px'
);
/* USING THE BOOT METHOD TO ADD EVENT LISTENERS TO THE CLASS */
public function boot( )
{
$this->observe( ); // we need to initialize the event listners
}
/* METHOD THAT WILL BUILD THE FIELDS , WILL BE CALLED BY CONSTRUCTOR */
public function formFields( )
{
/* ADDING A TEXT FIELD */
$this->addElement( array
(
'name' => 'ct_firstname',
'label' => 'Firstname:*',
'validate' => 'required'
) );
/* ADDING A TEXT FIELD */
$this->addElement( array
(
'name' => 'ct_lastname',
'label' => 'Lastname:*',
'validate' => 'required'
) );
/* ADDING A TEXT FIELD */
$this->addElement( array
(
'name' => 'ct_email',
'label' => 'Your email:*',
'validate' => array( 'required' , 'email' )
) );
/* ADDING A TEXT FIELD */
$this->addElement( array
(
'name' => 'ct_phone',
'label' => 'Your phone:*',
'validate' => 'required'
) );
/* ADDING A SELECT FIELD */
$this->addElement( array
(
'type' => 'select' ,
'name' => 'ct_reason' ,
'label' => 'Contact reason:*' ,
'values' => array
(
'' => 'Choose' ,
'enquiry' => 'Enquiry' ,
'information' => 'Information' ,
'billing' => 'Billing' ,
'other' => 'Other'
) ,
'validate' => 'required'
) );
/* ADDING A TEXTAREA FIELD */
$this->addElement( array
(
'type' => 'textarea' ,
'name' => 'ct_message' ,
'label' => 'Write message:*' ,
'attributes' => array( 'rows' => 7 ) ,
'validate' => 'required'
) );
/* ADDING A SUBMIT BUTTON */
$this->addElement( array
(
'type' => 'submit' ,
'name' => 'ct_contact_me' ,
'value' => 'Submit' ,
'parentEl' => array( 'style' => 'text-align:right;' )
) );
}
/* OBSERVER EVENTS, STATIC METHODS ARE USED, COULD BE IN A SEPARATE CLASS FILE */
public static function submit( $fieldName , $obj ) // form submit event, run validator here
{
$obj->validate( );
}
public static function error( $result , $errMsg , $obj ) // form is not valid, add an error msg
{
$errMsg = '<div class="errMsg" style="text-align:center;width:' . $obj->getOption( 'form_width' ) .
'">Something went wrong. Please review the form!</div><br>';
}
public static function valid( $result , $msg , $obj ) // form is valid, let's redirect the user to the login area
{
global $email_address , $mail_subject;
$mail_body = "Firstname: " . $_POST[ 'ct_firstname' ] . "\n";
$mail_body .= "Lastname: " . $_POST[ 'ct_lastname' ] . "\n";
$mail_body .= "Email: " . $_POST[ 'ct_email' ] . "\n";
$mail_body .= "Phone: " . $_POST[ 'ct_phone' ] . "\n";
$mail_body .= "Reason: " . $_POST[ 'ct_reason' ] . "\n";
$mail_body .= "Message: " . $_POST[ 'ct_message' ] . "\n";
mail( $email_address , $mail_subject , $mail_body );
$msg = '<div class="errMsg" style="text-align:center;width:' . $obj->getOption( 'form_width' ) .
'">Form has been sent!</div><br>';
}
public static function rendering( $container , $obj ) // before render event
{
// do something before the html is printed
$title = '<div style="text-align:center;width:' . $obj->getOption( 'form_width' ) .
'"><h1>Contact Form</h1></div>';
$container = $title . $container;
}
}
$form = new ContactForm( );
echo '<!DOCTYPE html><html><head>';
/* (OPTIONAL) INCLUDE JS FOR JQUERY VALIDATOR AND UI STYLES PLUGINS */
//require_once("ptcforms-ui-plugins.php");
/* MINIMAL CSS FOR THE EXAMPLE */
echo '<style>
body{font:normal .85em "trebuchet ms",arial,sans-serif;color:#555;}
input[type=text], select, textarea{width:220px;}
.errMsg{color:red;}
</style>';
echo'</head><body>';
/* FINALLY RENDER THE FORM */
$form->render( );
echo '</body></html>';
|