I recently had my first experience using the Entityform module in a project. It was quite easy to configure with different form types, but then I needed to embed the form into an overlay. I was expecting to use the drupal_get_form() function and render it, but this didn’t work.

Here are the steps that I took to be able to load, render and embed the form.

Loading the Form

The first thing that I needed to do to render the form was to load an empty instance of the entityform using entityform_empty_load() . In this example, newsletter is the name of my form type.

$form = entityform_empty_load('newsletter');

This returns an instance of a relevant Entityform object.

Rendering the Form

The next step was to be able to render the form. I did this using the entity_form_wrapper() function.

As this function is within the entityform.admin.inc file and not autoloaded by Drupal, I needed to include it using module_load_include() so that the function was available.

module_load_include('inc', 'entityform', 'entityform.admin'); $output = entityform_form_wrapper($form, 'submit', 'embedded'),

The first argument is the Entityform object that was created in the previous step (I’ve submitted a patch to type hint this within entityform so that it’s clearer what is expected), which is required.

The other two arguments are optional. The second argument is the mode ( submit is the default value), and the last is the form context. page is the default value, for use on the submit page, however I changed this to embedded .

I could then pass this result into my theme function to render it successfully within the relevant template file.

Resources