🔸Новый линтер для проверки переводов —
lint:translations. В отличие от существующей команды lint:xliff, которая проверяет только XLIFF-файлы, lint:translations анализирует все переводы, независимо от формата. Эта команда полезна для поиска ошибок в синтаксисе ICU MessageFormat, который может быть сложным (например, легко забыть закрывающую фигурную скобку или форму для множественного числа).🔸Улучшена работа с составными (compound) ограничениями для валидации. Compound constraint позволяет объединять несколько ограничений в одно, чтобы повторно использовать его в разных частях приложения. Например, можно создать ограничение
MatchPasswordPolicy для проверки пароля, включающее минимальную длину, отсутствие компрометации, наличие заглавных букв и другие правила. Это удобно применять к полям, требующим одинаковой проверки, как в классе пользователя User.🔸Добавлен новый атрибут
#[WhenNot], который позволяет исключить сервис из определенных окружений конфигурации. Этот атрибут дополняет существующий #[When], который регистрирует сервисы только для указанных окружений, как dev. Новый атрибут упрощает настройку, если нужно исключить сервисы из нескольких окружений (например, из dev и test), без необходимости прописывать #[When] для каждого окружения.🔸Улучшена работа с полем
EntityType в формах для повышения производительности при работе с большими наборами данных. Теперь добавлена возможность использовать опцию choice_lazy, которая включает ленивую загрузку значений с помощью нового LazyChoiceLoader.Когда choice_lazy включен, список значений остается пустым до тех пор, пока они не понадобятся, что позволяет избежать ненужных запросов к базе данных и снижает нагрузку. При необходимости значения подгружаются и кэшируются.
Примеры использования лежат по ссылкам👆