InputfieldForm class

Contains one or more fields in a form

Here is an example of creating an InputfieldForm using Inputfield modules. This particular example is an email subscription form.

$form = $modules->get('InputfieldForm');

$f = $form->InputfieldText;
$f->attr('name', 'your_name');
$f->label = 'Your Name';
$form->add($f);

$f = $form->InputfieldEmail;
$f->attr('name', 'your_email');
$f->label = 'Your Email Address';
$f->required = true;
$form->add($f);

$f = $form->InputfieldSubmit;
$f->attr('name', 'submit_subscribe');
$f->val('Subscribe');
$form->add($f);

// ProcessWire versions 3.0.205+
if($form->isSubmitted('submit_subscribe')) {
  if($form->process()) {
    $name = $form->getValueByName('your_name');
    $email = $form->getValueByName('your_email');
    echo "<h3>Thank you, you have been subscribed!</h3>";
  } else {
    echo "<h3>There were errors, please fix</h3>";
    echo $form->render();
  }
} else {
  // form not submitted, just display it
  echo $form->render();
}

// same as above but works in any ProcessWire version
if($input->post('submit_subscribe')) {
  // form submitted
  $form->processInput($input->post);
  $errors = $form->getErrors();
  if(count($errors)) {
    // unsuccessful submit, re-display form
    echo "<h3>There were errors, please fix</h3>";
    echo $form->render();
  } else {
    // successful submit (save $name and $email somewhere)
    $name = $form->getChildByName('your_name')->attr('value');
    $email = $form->getChildByName('your_email')->attr('value');
    echo "<h3>Thank you, you have been subscribed!</h3>";
  }
} else {
  // form not submitted, just display it
  echo $form->render();
}

Optional classes you can add to the InputfieldForm:

  • InputfieldFormNoHeights tells it not to worry about lining up all columns vertically.
  • InputfieldFormNoWidths indicates that form will be in 2-column label => input format (column widths do not apply).
  • InputfieldFormConfirm tell it to notify user if they make any changes and forgot to submit.

Click any linked item for full usage details and examples. Hookable methods are indicated with the icon. In addition to those shown below, the InputfieldForm class also inherits all the methods and properties of: InputfieldWrapper, Inputfield, WireData and Wire.

Show class?     Show args?       Only hookable?    

Errors

NameReturnSummary 
InputfieldForm::getErrors()
arrayReturn an array of errors that occurred on any of the children during input processing. 

Properties

NameReturnSummaryDefault
InputfieldForm::action string Form action attribute ./
InputfieldForm::appendMarkup string Optional markup to append to the form output ''
InputfieldForm::columnWidthSpacing int Optionally set the column width spacing (pixels) auto
InputfieldForm::confirmText string Confirmation text that precedes list of changes when class InputfieldFormConfirm is active There are unsaved changes:
InputfieldForm::description string Optionally set a description headline for the form ''
InputfieldForm::method string Form method attribute POST
InputfieldForm::prependMarkup string Optional markup to prepend to the form output ''
InputfieldForm::protectCSRF bool Set to false to disable automatic CSRF protection true

Additional methods and properties

In addition to the methods and properties above, InputfieldForm also inherits the methods and properties of these classes:

API reference based on ProcessWire core version 3.0.251