Skip to content

Configuration Forms

I need to... Guide Summary
Choose between FormBase and ListBuilder FormBase vs ListBuilder Use FormBase/ConfigFormBase when building settings pages or custom admin forms. Use ListBuilder when displaying entity collections with standard CRUD operations.
Create a configuration settings form ConfigFormBase Pattern Use ConfigFormBase when building a module settings page that stores configuration in the config system (database + YML export).
Build a custom admin table/form FormBase Pattern Use FormBase when building custom admin forms that don't fit ConfigFormBase (bulk operations, complex workflows, non-config data).
Create an entity collection list ListBuilder Pattern Use ListBuilder when building entity collection admin pages with standard CRUD operations.
Implement dropbutton operations Operations Implementation Use #type operations when adding action links (Edit, Delete, etc.) to table rows in FormBase or customizing operations in ListBuilder.
Define configuration schema Configuration Schema Use configuration schema when defining structure and validation constraints for configuration stored by ConfigFormBase.
Use dependency injection in forms Dependency Injection Use dependency injection when forms need services (config factory, entity type manager, database, custom services).
Secure configuration forms Security Best Practices All configuration forms must follow security best practices to prevent vulnerabilities.
Optimize form performance Performance Best Practices Optimize configuration forms to avoid performance bottlenecks, especially forms with many operations or large datasets.
Avoid common mistakes Common Mistakes Reference when debugging form issues or reviewing code.