Отключение валидации при сабмите формы
HTML-атрибут formnovalidate
(определенный только для элементов image
и input[type=submit]
) позволяет отключить проверку на стороне клиента при отправке формы.
В Symfony 4.4 кнопки отправки (SubmitType
) определяют новый логический параметр validate
для включения/отключения этой проверки:
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
// ...
$builder->add('save', SubmitType::class);
$builder->add('save-as-draft', SubmitType::class, [
'validate' => false,
]);
Добавлена поддержка кодов Alpha-3
Поле формы CountryType
по умолчанию использует коды Alpha-2 для обозначения каждой страны (например, bw
= Ботсвана, sg
= Сингапур и т. д.). В Symfony 4.4 добавили новую опцию alpha3, чтобы вы могли использовать альфа-версию ISO 3166-1 -3 кода тоже (например, bwa
= Ботсвана, sgp
= Сингапур):
use Symfony\Component\Form\Extension\Core\Type\CountryType;
// ...
$builder->add('country', CountryType::class, [
'alpha3' => true,
]);
В связи с этим в запросе на слияние #32988 Терье Братен добавил поддержку кодов Alpha-3 в компоненте Intl
:
use Symfony\Component\Intl\Languages;
use Symfony\Component\Intl\Countries;
$languages = Languages::getAlpha3Names();
$isValidLanguage = Languages::alpha3CodeExists($alpha3Code);
$alpha3Code = Languages::getAlpha3Code($alpha2Code);
$countries = Countries::getAlpha3Names();
$isValidCountry = Countries::alpha3CodeExists($alpha3Code);
$alpha3Code = Countries::getAlpha3Code($alpha2Code);
Показать предпочтительные варианты дважды
Параметр preferred_choices опция в поле формы ChoiceType
позволяет отображать некоторые варианты выбора в верхней части списка (например, сначала отображать наиболее популярные страны доставки в вашем магазине).
Хотя этот параметр удобен для большинства пользователей, другие путаются, потому что предпочтительные варианты больше не отображаются в полном списке вариантов. Вот почему, начиная с Symfony 4.4, предпочтительные варианты отображаются дважды: вверху списка выбора и в их исходном местоположении, если они не были предпочтительными.
Атрибут автоматического принятия
В Symfony 4.4, когда вы определяете опцию mimeTypes
в валидаторе File, применяемом к полю формы FileType
, значение опции mimeTypes
также используется в атрибуте accept связанного <input type="file"/>
HTML-элемента .
Это поведение применяется только при использовании угадывания типа формы и когда поле не определяет свое собственное допустимое значение.
Получение имени формы в тестах
При тестировании форм в функциональных тестах обычно используется некоторый код, подобный следующему, который жестко кодирует имя формы (my_form[…]
как в этом примере):
$client = static::createClient();
$crawler = $client->request('GET', '/sign-up');
$formButton = $crawler->selectButton('submit');
$form = $formButton->form([
'my_form[name]' => '...',
'my_form[password]' => '...',
// ...
]);
В Symfony 4.4 добавили метод getName()
, чтобы вы могли получить имя формы вместо его жесткого кодирования:
// ...
$form = $formButton->form();
$formName = $form->getName();
$client->submit($form, [
$formName.'[name]' => '...',
$formName.'[password]' => '...',
]);