You are here

public function QuizQuestionConfig::buildForm in Quiz 8.4

Form constructor.

Parameters

array $form: An associative array containing the structure of the form.

\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.

Return value

array The form structure.

Overrides ConfigFormBase::buildForm

File

question_types/quiz_question/lib/Drupal/quiz_question/Form/QuizQuestionConfig.php, line 26
Contains \Drupal\quiz\Form\QuizQuestionConfigForm.

Class

QuizQuestionConfig
Defines a form to configure maintenance settings for this site.

Namespace

Drupal\quiz_question\Form

Code

public function buildForm(array $form, array &$form_state) {
  $q_types = _quiz_question_get_implementations();
  $form['#validate'] = array();
  $form['#submit'] = array();

  // Go through all question types and merge their config forms
  foreach ($q_types as $type => $values) {
    $function = $type . '_config';
    if ($admin_form = $function()) {
      $form[$type] = $admin_form;
      $form[$type]['#type'] = 'fieldset';
      $form[$type]['#title'] = $values['name'];
      $form[$type]['#collapsible'] = TRUE;
      $form[$type]['#collapsed'] = TRUE;
      if (isset($admin_form['#validate'])) {
        $form['#validate'] = array_merge($form['#validate'], $admin_form['#validate']);
        unset($form[$type]['#validate']);
      }
      if (isset($admin_form['#submit'])) {
        $form['#submit'] = array_merge($form['#submit'], $admin_form['#submit']);
        unset($form[$type]['#submit']);
      }
    }
  }
  $form['#submit'][] = 'quiz_question_config_submit';
  return parent::buildForm($form, $form_state);
}