New in Symfony 5.3: Form Field Sorting
May 19, 2021 • Published by Javier Eguiluz
Symfony 5.3 is backed by:
Warning: This post is about an unsupported Symfony version. Some of this information may be out of date. Read the most recent Symfony Docs.
Symfony forms render their fields in the same order that you define them. This might cause issues when adding/removing fields dynamically in complex forms (e.g. a field added via form events can end up being rendered after the form submit button).
That's why in Symfony 5.3 you can sort form fields to control the order in
which they are rendered. To do so, use the new priority
option, which is
a positive or negative integer with a default value of 0
. Fields with higher
priorities are rendered first (and fields with same priority are rendered in
their original order):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
// src/Form/Type/TaskType.php
namespace App\Form\Type;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\DateType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
class TaskType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('task', TextType::class, ['priority' => 150])
->add('dueDate', DateType::class)
->add('save', SubmitType::class, [
'priority' => $options['show_first'] ? 1000 : -1000,
])
;
}
}
Help the Symfony project!
As with any Open-Source project, contributing code or documentation is the most common way to help, but we also have a wide range of sponsoring opportunities.
Comments are closed.
To ensure that comments stay relevant, they are closed for old posts.
Now it works like a charm. Thank you much!