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.

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

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

{% set form = form('books', 'reviews') %}

{{|raw }}

    {% for field in form.fields %}
    <div class="{{ field.input_name }}-wrapper">
        {{ field.render()|raw
    {% 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{.link} Form Builders{.link}

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.

{{ 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{.link}

Form 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{.link}

Form Configuration{.link}

Setting Options

You can set options by using the setOption method.

Form Options{.link}

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