Symfony bundle for rendering form into a given layout without the need of custom templates
Install this bundle via Composer:
$ composer require subbeta/form-layout-bundle
First, register the bundle:
# config/bundles.php
return [
// ...
FormLayoutBundle\FormLayoutBundle::class => ['all' => true],
];
Add the layout twig globall:
# config/packages/twig.yaml
twig:
# ...
form_themes:
- '@FormLayout/form/layout.html.twig'
or you can set it in the template with
{% form_theme form with ['@FormLayout/form/layout.html.twig'] %}
use FormLayoutBundle\Form\AbstractLayoutType;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\Form\FormView;
class MyType extends AbstractLayoutType
{
// ...
public function getLayout(FormView $view, FormInterface $form): Layout\AbstractLayout
{
$this->sortFields($view);
$layout = new Layout\FormLayout();
// ...
return $layout;
}
}
{# ... #}
{{ form(form) }}
{# OR if you want to render additional elements #}
{{ form_start(form) }}
{# add the additional elements here #}
{% use '@FormLayout/form/form_layout.html.twig' %}
{{ block('formlayout_layout') }}
{# or here #}
{{ form_end(form) }}
use FormLayoutBundle\FormLayout\AbstractLayout;
class MyLayout extends AbstractLayout
{
public function getType(): string
{
return 'mylayout';
}
// ...
}
{% block formlayout_mylayout %}
{# ... #}
{% endblock formlayout_form %}