JSON Powered Forms in Drupal


Developers hate dealing with forms. Not only do they have to concern themselves with building and managing the form and its elements, but they also must worry about how the form is submitted and data is handled. Ten years ago, this problem was made much easier when Drupal introduced the Form API, which finally allowed developers to dynamically render their forms using PHP. This was a time when Drupal was held responsible for delivering the HTML form to the web browser interface. It was amazing and life was good.

Now the web is changing and applications must be built differently. We are now in a web environment where the proliferation of devices and user interfaces has mandated a complete separation between the front-end application and the backend server. This is a time when API's are king and web applications must adapt to the new paradigm of API-first development. With this shift, we are now facing the same problems we faced before the Drupal Form API came along, but this time, we can no longer rely on Drupal to solve our form rendering problem. We need an alternative to the Form API. We need a solution that will serve as a bridge for the web applications that still need the amazing power and flexibility of Drupal, but must also leverage the latest front end technologies such as Angular.js and React.

In this presentation, Travis Tidwell and Randall Knutson will talk about what is being called the "Next Generation of Web Forms" where the forms themselves are dynamic JavaScript renderings of JSON based schemas. This new way of form management provides the benefits of the Form API, but also allows for the complete separation between the front-end and the back-end of the application. This capability introduces new ways to share and manipulate forms in a surprising way, and offers an elegant bridge into the world of a truly “headless” Drupal.

Let's talk about it!

Session Track

Front End

Experience Level


Drupal Version

When & Where

Wednesday, 11 May, 2016 - 17:00 to 18:00
264 [Lullabot]