---
title: Forms
---

# Forms

<div class="documentation__toc"></div>

## Introduction

The `form` plugin function allows you to initialize, configure, and display a form builder inline within a view.

### Displaying Forms

The easiest way to display a form is to use the `form` function and specify the `namespace` and `stream` slug.

The `render` method will trigger display but it is optional as `__toString` will result in the same thing.

```twig
{{ form('books', 'reviews').render()|raw }}
```

You may want to take more control and set the form to a variable and use it.

```twig
{% set form = form('books', 'reviews').get() %}

{{ form.open|raw }}

    {% for field in form.fields %}
    <div class="{{ field.input_name }}-wrapper">
        {{ field.render()|raw
    </div>
    {% endfor %}

    {{ form.actions|raw }}

{{ form.close|raw }}

```

### Binding Form Builders

The `form` function makes use of a generic form `builder` class by default. Often times, however, you want to build and use a specific form builder. The easiest way to use said builder in the `form` function is to `bind` it to the service container.

You can define a form builder `binding` within a service provider.

[Service Providers](../the-basics/service-providers){.link}
[Form Builders](../ui/forms){.link}

```php
protected $bindings = [
    'employment_application_form' => \Anomaly\ExampleModule\Applications\Form\PublicApplicationFormBuilder::class
];
```

After binding the form builder you can use it by specifying the bound `key`.

```twig
{{ form('employment_application').render()|raw }}
```


## Form Components

You can work with form `components` similarly as to how you would work with a form `builder`.

[Form Builders](../ui/forms){.link}

[Form Components](../ui/forms/components){.link}


## Configuring Forms

You can configure forms inline to an extent. Which is sometimes easier than writing a dedicated form builder.

Generally you can interact with the form `criteria` the same as you would with a form `builder` instance.

[Form Builders](../ui/forms){.link}

[Form Configuration](../ui/forms/configuration){.link}

### Setting Options

You can set options by using the `setOption` method.

[Form Options](../ui/forms/configuration/options){.link}

```twig
{{ form('employment_application')
    .setOption('redirect', url_previous())
    .render()|raw }}
```
