Добавлен параметр 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).