Forms
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.
{{ 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').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{.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 }}