Rendering Options

Rendering options allow you to customize form and field output without having to override the templates. Rendering options can be passed as a twig object to the displayForm, displayTab or displayField tags.

{% set options = {     "id": "my-form" } %}  {{ craft.sproutForms.displayForm("formHandle", options) }} 

Rendering Options may be handy to solve a specific situation, however, can become harder to maintain or reuse across multiple forms.

Note

For 100% control over your Form Templates, see Template Overrides.

# Options

Sprout Forms supports the following rendering options.

# Form tag options

The following options will modify the <form> tag.

Option Type Default Description
id string formHandle-form The id to assign to the form tag
class string formHandle-form A space-separated list of classes to apply to the form tag
errorClass string errors A space separated list of classes to apply to the form tag when errors are found

# Field wrapper and input tag options

The following options will modify the <input> field and the wrapper <div> and related tags that surround each <input> field. (See the displayField() example below.)

Option Type Default Description
id string fieldHandle-field The id to assign to the input tag
class string fieldHandle-field A space separated list of classes to apply to the input tag
errorClass string errors A space separated list of classes to apply to theinput tag when errors are found
data {} An object (associative array) of data attributes to set on the form or input tag

Custom Fields

Custom Form Fields will need to add support for these options on their own. If you are using Rendering Options with a custom Form Field and they are not behaving as expected, you may need to reach out to the respective plugin developer.

# Examples

# Overriding values via the displayForm tag

The displayForm() accepts rendering options for the form tag and input fields. To provide rendering options for your fields, you must create a fields object and use the field handle to identify the fields that the containing rendering options should be applied to.

{% set options = {     "id": "myform",     "class": "form-class form-class-customized",     "errorClass": "form-has-error",     "fields": {         "fieldHandle": {             "id": "myfield",             "class": "my-fancy-class",             "errorClass": "field-has-error",             "data": {                 "hidden": "false",             }         }     } } %}  {{ craft.sproutForms.displayForm("formHandle", options) }} 

Rendered HTML

<form method="post" id="myform" class="form-class form-class-customized form-has-error">      {# The example assumes our field is a Single Line field #}     <div id="fields-myfield-field" class="field singleline field my-fancy-class required field-has-error">         <div class="heading">             <label for="fields-fieldHandle">Field Name</label>         </div>         <div class="input">             <input type="text" name="fields[fieldHandle]" id="fields-myfield" class="my-fancy-class" required data-hidden="false" />         </div>     </div>  </form> 

Field Prefixes

The ID you specific will be prefixed with field-. This prefix is added by the {% namespace %} tag in the Form Templates field.twig file and also adds the fields namespace around the fieldHandle on the Form Field input tags (i.e. name="fields[fieldHandle]").