コード例 #1
0
 /**
  * Adjust form fields to given page.
  *
  * @param \FormFieldModel[] $formFields
  * @param string            $formId
  * @param \Form             $form
  */
 public function compileFormFields($formFields, $formId, \Form $form)
 {
     // Make sure empty form fields arrays are skipped
     if (0 === count($formFields)) {
         return $formFields;
     }
     $manager = new MPFormsFormManager($form->id);
     // Don't try to render multi page form if no valid combination
     if (!$manager->isValidFormFieldCombination()) {
         return $manager->getFieldsWithoutPageBreaks();
     }
     // Do not let Contao validate anything if user wants to go back
     if ('back' === $_POST['mp_form_pageswitch']) {
         $this->redirectToStep($manager, $manager->getPreviousStep());
     }
     // Validate previous steps data
     if (!$manager->isFirstStep()) {
         $vResult = $manager->validateSteps(0, $manager->getCurrentStep() - 1);
         if (true !== $vResult) {
             $manager->setPreviousStepsWereInvalid();
             $this->redirectToStep($manager, $vResult);
         }
     }
     // If someone wanted to skip the page, fake form submission so fields
     // are validated and show the error message.
     if ($manager->getPreviousStepsWereInvalid()) {
         \Input::setPost('FORM_SUBMIT', $manager->getFormId());
         $manager->resetPreviousStepsWereInvalid();
     }
     return $manager->getFieldsForStep($manager->getCurrentStep());
 }