Processing Forms in Drupal

Drupal’s Form API makes it easy to author custom logic for processing user submitted data by handling the underlying details so you can focus on your application specific code.

This course covers how to implement the submitForm() method in form controllers to process and store data, how to use #submit callbacks to add custom processing logic to forms, and how to handle form submissions when your module does not define the form controller. By the end of the course, you will be able to effectively manage form submissions, ensuring that user input is validated, processed, and stored correctly.

Key topics

  • Handling submitted form data using the submitForm() method
  • Adding custom submission processing logic via #submit callbacks
  • Implementing form submission handling in form controllers
  • Accessing and using form input values via the $form_state object
  • Setting redirects after form submission
  • Practical examples of form submission scenarios
  • Best practices for ensuring data integrity and user experience during form processing
Tutorials in this course
Categories
Drupal 8, 9, and 10
More information

You probably created a form with the intent of collecting user input and then doing something with that input. Using the submitForm() method of our form class we can access the validated, and sanitized, user input data and make use of it for our own needs. We might do things like save the collected data as configuration, update an entity, or use it as part of a search query.

In this tutorial we'll:

  • Demonstrate how to add a submitForm() method to a form controller class
  • Access the value(s) of form input elements via the $form_state object
  • Set a redirect after performing processing in a form submission handler
  • Look at alternative ways to affect the submission handling of a form like #submit callbacks

By the end of this tutorial you should know how to access the values of a submitted form, and how to write custom processing code that gets invoked when the form passes validation.

More information

Sometimes you need to add additional processing of input to forms where your module doesn't implement the form controller. In order to do this you can use the #submit property of the root level $form element, or of a specific button on a form, to add one or more callbacks. These functions, or methods, will be automatically called when the Form API is processing a submitted form and give your custom code an opportunity to do whatever it needs to do.

In this tutorial we'll:

  • Look at alternative ways to affect the submission handling of a form like #submit callbacks

By the end of this tutorial you should know how to add a #submit callback to an entire form, or a specific button in a form.

More information

When you create a custom form for Drupal and your module defines the form controller, the best way to handle processing of submitted data is via the submitForm() method of your controller. This method is called automatically by the Form API during the process of handling a user-submitted form. It can be used to save incoming data to the database, trigger a workflow based on user input, and instruct the Form API where to send the user after form processing has completed.

In this tutorial we'll:

  • Demonstrate how to add a submitForm() method to a form controller class
  • Access the value(s) of form input elements via the $form_state object
  • Set a redirect after performing processing in a form submission handler

By the end of this tutorial you should know how to access the values of a submitted form, and how to write custom processing code inside of the submitForm() method of a form controller.

This course appears in the following guides:
Module Development
Learn to use Drupal's Form API to define, validate, and process forms in modules and themes.

Develop Forms in Modules