В Symfony, при работе с Form Component, есть возможность наследовать формы для удобства повторного использования и добавления дополнительной функциональности. Иногда, при наследовании формы, может возникнуть необходимость переопределить свойства существующего поля в наследуемой форме. Для этого можно воспользоваться методом configureOptions
класса AbstractType
.
- Создайте наследуемую форму, которая будет расширять базовую форму:
namespace AppForm; use SymfonyComponentFormAbstractType; use SymfonyComponentFormFormBuilderInterface; use SymfonyComponentOptionsResolverOptionsResolver; class ExtendedFormType extends BaseType { public function configureOptions(OptionsResolver $resolver) { parent::configureOptions($resolver); // Добавьте свойства для переопределения $resolver->setDefault('label', 'Новая метка'); $resolver->setDefault('required', false); } }
- В методе
configureOptions
вызывайтеparent::configureOptions($resolver)
, чтобы иметь возможность использовать настройки базовой формы. - Используйте метод
setDefault
объектаOptionsResolver
, чтобы переопределить значение свойств. В приведенном примере мы переопределяемlabel
иrequired
для поля.
Теперь вы можете использовать ExtendedFormType
вместо BaseType
в ваших контроллерах или других местах, где вы используете форму.
При использовании ExtendedFormType
выводимая метка и требуемость поля будет соответствовать переопределенным значениям.