Добавлен параметр html5 в ColorType
Добавили новую опцию html5 в поле формы ColorType. Если для этого параметра установлено значение true, тип формы проверяет, соответствует ли его значение цветовому формату HTML5, то есть /^#[0-9a-f]{6}$/i.
Добавлен параметр rounding_mode в PercentType
Новый параметр rounding_mode поля формы PercentType полезен в сочетании с параметром масштабирования, который определяет допустимое количество десятичных знаков перед применением округления.
Значения rounding_mode — это любые константы PHP \NumberFormatter (\NumberFormatter::ROUND_CEILING, \NumberFormatter::ROUND_HALFEVEN и т. д.)
Разрешено HTML-содержимое в ярлыках форм
По умолчанию содержимое HTML экранируется в метках формы из соображений безопасности. Новый логический параметр label_html позволяет полю формы включать HTML-содержимое в свои метки, что полезно для отображения значков внутри кнопок, ссылок и некоторого форматирования в метках флажков/переключателей и т. д.
// src/Form/Type/TaskType.php
namespace App\Form\Type;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\FormBuilderInterface;
class TaskType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
// ...
->add('save', SubmitType::class, [
'label' => ' Save',
'label_html' => true,
])
;
}
}
Упрощенная reference_date в TimeType
В поле формы с типом TimeType, когда вы используете разные значения для model_timezone и view_timezone, вы должны установить опцию reference_date. В Symfony 5.1, когда не задано значение reference_date, для view_timezone по умолчанию используется настроенный model_timezone.
Лучшие значения по умолчанию для параметра inputmode
HTML-атрибут inputmode сообщает браузерам, какие данные могут быть введены пользователем при редактировании элемента или его содержимого (например, номер телефона, адрес электронной почты, десятичное число и т. д.)
Уже используем эту опцию в полях формы, таких как UrlType, но в Symfony 5.1 решили настроить лучшие значения по умолчанию для режима ввода в нескольких полях:
inputmode='email'дляEmailType;inputmode='search'дляSearchType;inputmode='tel'дляTelType;
Выбор улучшений
Новая опция choice_filter позволяет вам фильтровать список вариантов по умолчанию, настроенный для данного поля формы. Используйте закрытие PHP, чтобы решить, следует ли сохранить или удалить выбор (и объедините его с параметрами настраиваемого типа формы для максимальной гибкости):
// src/Form/Type/AddressType.php
namespace App\Form\Type;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\CountryType;
use Symfony\Component\Form\FormBuilderInterface;
class AddressType extends AbstractType
{
// ...
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
// ...
->add('country', CountryType::class, [
// $allowedCountries is a custom form type option
// closure returns TRUE to keep the choice and FALSE to remove it
'choice_filter' => $allowedCountries ? function ($countryCode) use ($allowedCountries) {
return in_array($countryCode, $allowedCountries, true);
} : null,
])
;
}
Кроме того, обновили внутреннее устройство Symfony Forms для поддержки кеширования списков выбора на основе опций (см. pull request #30994), обеспечивая повышение производительности от 15% до 30%.
Наконец, представили AbstractChoiceLoader, чтобы упростить выбор реализаций с отложенной загрузкой и обработать глобальную оптимизацию (см. pull request #34550).