Новое в Symfony 6.3 — Улучшения Form
Компонент Form
— один из самых надёжных компонентов Symfony. Он настолько зрелый и стабильный, что в него больше не добавляются новые возможности. Однако в Symfony 6.3 мы его улучшили, добавив несколько новых незначительных возможностей.
Улучшенная обработка секунд в полях даты/времени
Опция with_seconds
для таких полей как, DateTimeType
и TimeType
, сообщает Symfony, следует ли включать секунды в input
. Когда в поле формы нет данных, эта опция показывает/скрывает секунды.
Однако, когда в поле есть какие-либо данные, секунды всегда отображаются из-за того, как обрабатываются значения даты/времени.
В Symfony 6.3 эта опция всегда будет работать должным образом, независимо от данных поля.
HTML5 виджеты даты/времени по умолчанию
Опция html5
полей даты говорит Symfony использовать собственный виджет HTML5 для отображения полей даты/времени. Однако установки значения true
недостаточно, чтобы увидеть эти нативные виджеты. Вы также должны установить для опции widget
значение single_text
.
Однако из-за Обещания обратной совместимости Symfony мы не можем просто изменить значение по умолчанию для этой опции widget
, потому что это нарушит работу некоторых приложений. Вместо этого в Symfony 6.3 мы рекомендуем устанавливать значение для этой опции. Таким образом, все приложения должны принять осознанное решение о том, какое значение использовать в этой опции widget
.
Это позволит сделать single_text
значением widget
по умолчанию в Symfony 7.0 (выходящем в ноябре 2023 года), чтобы завершить это улучшение.
Выбор атрибутов placeholder
Поле ChoiceType
и все связанные с ним поля (Country
, Currency
, Locale
, Language
, Entity
, и т.д.) определяют опцию placeholder
для отображения общей Choose an option
/Выберите опцию
пустой опции наверху списка опций.
В Symfony 6.3 мы добавили новую опцию placeholder_attr
, чтобы вы могли настроить placeholder
(например, чтобы отображать его отключённым, добавлять к нему HTML атрибуты и т.д.):
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
// ...
$builder->add('fruits', ChoiceType::class, [
// ...
'placeholder' => '...',
'placeholder_attr' => [
'title' => 'Choose an option',
'disabled' => true,
'data-some-custom-attribute' => 'foo',
],
]);