A Symfony bundle for building and handling multi-step forms with navigation, validation, and file upload support.
CraueFormFlowBundle is a Symfony bundle that enables developers to build and manage multi-step forms in their Symfony applications. It solves the problem of handling complex form workflows by breaking them into sequential steps with persistent data, navigation controls, and step-specific validation. The bundle provides tools for dynamic step skipping, file upload handling, and customizable form rendering.
Symfony developers building applications that require complex multi-page forms, such as registration wizards, configuration assistants, or data entry processes with conditional steps.
Developers choose CraueFormFlowBundle because it integrates seamlessly with Symfony's form component, offers flexible configuration options (single form type or per-step forms), and handles the complexity of step persistence and validation automatically, reducing boilerplate code.
Multi-step forms for your Symfony project.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Supports both a single form type for the entire flow and separate form types per step, allowing developers to choose based on reuse needs, as shown in the README's Approach A and B.
Handles dynamic step skipping, per-step validation groups, and data persistence across steps, ensuring data integrity and conditional workflows without manual session handling.
Transparently manages file uploads across steps by Base64 encoding in session storage, though this can be disabled for performance, as mentioned in the advanced section.
Seamlessly integrates with Symfony's form component and service container, including support for events and Doctrine storage, making it a natural fit for Symfony ecosystems.
Base64 encoding of files in session storage can lead to increased memory usage and performance degradation, especially for large uploads, as noted in the README's handling section.
Requires manual service registration, template creation, and understanding of events and flow classes, which can be daunting compared to simpler form libraries or drop-in solutions.
Exclusively designed for Symfony, making it unsuitable for applications using other PHP frameworks or headless architectures, and adding vendor lock-in.