* @ignore */ require_once 'HTML/QuickForm/Controller.php'; require_once 'HTML/QuickForm/Action/Display.php'; // Start the session session_start(); // Rule for passwords comparison function comparePassword($fields) { if (strlen($fields['password1']) && strlen($fields['password2']) && $fields['password1'] != $fields['password2']) { return array('password1' => 'Passwords are not the same'); } return true; } // Class for first page : credentials class Page_Account_Credentials extends HTML_QuickForm_Page { function buildForm() { $this->_formBuilt = true; $this->addElement('header', 'credential_header', 'Your credentials'); $this->addElement('text', 'username', 'Your email address :', array('size' => 30, 'maxlength' => 63)); $this->addElement('password', 'password1', 'Your password :', array('size' => 16, 'maxlength' => 32)); $this->addElement('password', 'password2', 'Confirm your password :', array('size' => 16, 'maxlength' => 32)); $buttons[0] =& HTML_QuickForm::createElement('button', 'cancel', 'Cancel', array('onclick'=>"javascript:location.href='http://pear.php.net/package/HTML_QuickForm';")); $buttons[1] =& HTML_QuickForm::createElement('submit', $this->getButtonName('next'), 'Next step >>'); $this->addGroup($buttons, 'buttons', '', ' ', false); $this->addRule('username', 'Your email address is required', 'required', null, 'client'); $this->addRule('username', 'Your email address is incorrect', 'email', null, 'client'); $this->addRule('password1', 'The password is required', 'required', '', 'client'); $this->addRule('password1', 'The password is too short: 6 chars minimum', 'minlength', 6, 'client'); $this->addRule('password2', 'The password confirmation is required', 'required', '', 'client'); $this->addFormRule('comparePassword'); $this->setDefaultAction('next'); } } // Class for second page : user data class Page_Account_Information extends HTML_QuickForm_Page { function buildForm() { $this->_formBuilt = true; $this->addElement('header', 'data_header', 'Your personal data'); $name[] = &HTML_QuickForm::createElement('text', 'first', 'Firstname', array('size' => 16, 'maxlength' => 63)); $name[] = &HTML_QuickForm::createElement('text', 'last', 'Lastname', array('size' => 16, 'maxlength' => 63)); $this->addGroup($name, 'name', 'Your name :', null, false); $this->addElement('text', 'company', 'Your company :', array('size' => 30, 'maxlength' => 63)); $this->addElement('text', 'address1', 'Your address :', array('size' => 30, 'maxlength' => 63)); $this->addElement('text', 'address2', ' ', array('size' => 30, 'maxlength' => 63)); $this->addElement('text', 'zip', 'Zip code :', array('size' => 16, 'maxlength' => 16)); $this->addElement('text', 'city', 'City :', array('size' => 30, 'maxlength' => 63)); $countries = array('FR'=>'France', 'GE'=>'Germany', 'RU'=>'Russia', 'UK'=>'United Kingdom'); $this->addElement('select', 'country', 'Your country :', $countries); $this->addElement('text', 'phone', 'Phone number :', array('size' => 16, 'maxlength' => 16)); $this->addElement('text', 'fax', 'Fax number :', array('size' => 16, 'maxlength' => 16)); $prevnext[] =& $this->createElement('submit', $this->getButtonName('back'), '<< Previous step'); $prevnext[] =& $this->createElement('submit', $this->getButtonName('next'), 'Finish'); $this->addGroup($prevnext, 'buttons', '', ' ', false); $this->addGroupRule('name', 'First and last names are required', 'required'); $this->addRule('company', 'Company is required', 'required'); $this->addRule('address1', 'Address is required', 'required'); $this->addRule('city', 'City is required', 'required'); $this->setDefaultAction('next'); } } // Class for form rendering class ActionDisplay extends HTML_QuickForm_Action_Display { function _renderForm(&$page) { $renderer =& $page->defaultRenderer(); $page->setRequiredNote('* shows the required fields.'); $page->setJsWarnings('Those fields have errors :', 'Thanks for correcting them.'); $renderer->setFormTemplate('{content}
'); $renderer->setHeaderTemplate('{header}'); $renderer->setGroupTemplate('{content}
', 'name'); $renderer->setGroupElementTemplate('{element}
*{label}', 'name'); $page->accept($renderer); echo $renderer->toHtml(); } } // Class for form processing class ActionProcess extends HTML_QuickForm_Action { function perform(&$page, $actionName) { $values = $page->controller->exportValues(); echo '
';
        var_dump($values);
        echo '
'; } } $wizard =& new HTML_QuickForm_Controller('regWizard', true); $wizard->addPage(new Page_Account_Credentials('page1')); $wizard->addPage(new Page_Account_Information('page2')); $wizard->setDefaults(array('country' => 'FR')); $wizard->addAction('display', new ActionDisplay()); $wizard->addAction('process', new ActionProcess()); $wizard->run(); ?>