email()->validate('user-email'); // check for errors if ($validator->hasErrors()) { $_SESSION['errors'][$form_id] = $validator->getAllErrors(); // register errors in a custom session variable to transmit to ajax dynamic form // because errors will be registered & cleared when we construct the form $_SESSION['ajax-errors'][$form_id] = $_SESSION['errors'][$form_id]; } else { $email_config = array( 'sender_email' => 'contact@phpformbuilder.pro', 'sender_name' => 'Php Form Builder', 'recipient_email' => addslashes($_POST['user-email']), 'subject' => 'Php Form Builder - Dynamic fields Form 2', 'filter_values' => $form_id ); $sent_message = Form::sendMail($email_config); Form::clear($form_id); if (isset($_SESSION['ajax-errors'][$form_id])) { unset($_SESSION['ajax-errors'][$form_id]); } } } // clear dynamic errors on page load if ($_SERVER["REQUEST_METHOD"] !== "POST" && isset($_SESSION['ajax-errors'][$form_id])) { unset($_SESSION['ajax-errors'][$form_id]); } /* ================================================== The Form ================================================== */ $form = new Form($form_id, 'horizontal', 'novalidate', 'bs3'); // $form->setMode('development'); $form->setCols(2, 8, 'md'); $form->addInput('email', 'user-email', '', 'Your email', 'placeholder=Email, required'); $form->setCols(2, 3, 'md'); $form->groupInputs('job-1', 'person-1'); $form->addOption('job-1', '', 'Choose one ...', '', 'disabled, selected'); $form->addOption('job-1', 'Content writer', 'Content writer'); $form->addOption('job-1', 'Tech Support / Technical Leader', 'Tech Support / Technical Leader'); $form->addOption('job-1', 'Office Assistant', 'Office Assistant'); $form->addOption('job-1', 'Secretary', 'Secretary'); $form->addOption('job-1', 'Team Leader', 'Team Leader'); $form->addOption('job-1', 'Data Analyst', 'Data Analyst'); $form->addOption('job-1', 'Safety Officer', 'Safety Officer'); $form->addOption('job-1', 'Delivery Boy', 'Delivery Boy'); $form->addOption('job-1', 'Admin Assistant', 'Admin Assistant'); $form->addSelect('job-1', 'Job', 'class=selectpicker job, data-icon-base=glyphicon, data-tick-icon=glyphicon-ok, required'); $form->addOption('person-1', '', 'Choose one ...', '', 'disabled, selected'); $form->addOption('person-1', 'Adam Bryant', 'Adam Bryant'); $form->addOption('person-1', 'Lillian Riley', 'Lillian Riley'); $form->addOption('person-1', 'Paula Day', 'Paula Day'); $form->addOption('person-1', 'Kelly Stephens', 'Kelly Stephens'); $form->addOption('person-1', 'Russell Hawkins', 'Russell Hawkins'); $form->addOption('person-1', 'Carl Watson', 'Carl Watson'); $form->addOption('person-1', 'Judith White', 'Judith White'); $form->addOption('person-1', 'Tina Cook', 'Tina Cook'); $form->addSelect('person-1', 'Person', 'class=selectpicker person, data-icon-base=glyphicon, data-tick-icon=glyphicon-ok, required'); // Dynamic fields - container + add button $form->addHtml('
'); $form->addHtml('

 

'); $form->addHtml('

 

'); $form->addHtml('
'); // End Dynamic fields // cancel/submit $form->setCols(0, 12); $form->centerButtons(true); $form->addBtn('button', 'cancel', 0, 'Cancel', 'class=btn btn-warning', 'btn-group'); $form->addBtn('submit', 'submit-btn', 1, 'Submit', 'class=btn btn-success ladda-button, data-style=zoom-in', 'btn-group'); $form->printBtnGroup('btn-group'); // jQuery validation $form->addPlugin('formvalidation', '#' . $form_id); ?> Bootstrap 3 Php Form with Ajax dynamic fields - How to create PHP forms easily ============================================= */ include_once '../assets/code-preview-head.php'; ?> printIncludes('css'); ?>

Php Form Builder - Form with dynamic ajax-loaded fields
Click "+" or "-" buttons to add or remove fields

render(); ?>
printIncludes('js'); $form->printJsCode(); ?>