CraueFormFlowBundle (v3.7.0) but refactored for Symfony 6/7, aligning with modern Symfony architecture (e.g., dependency injection, event dispatching). This ensures compatibility with Symfony’s latest features like attribute routing, PHP 8.1+, and Flex-based autoconfiguration.loadStepsConfig()) and dynamic form field rendering (flow_step option), reducing boilerplate for complex workflows. Ideal for:
FormFlow class abstracts session management, step navigation, and form binding, requiring only:
FormFlow).flow_step logic).CraueFormFlowBundle), but Symfony <6.0 is unsupported. Assess if your project’s Symfony version (or upgrade path) aligns with this constraint.asmitta_formflow_button_class_last). Supports Symfony UX Turbo with workarounds (e.g., HTTP_UNPROCESSABLE_ENTITY response).| Risk Area | Mitigation Strategy |
|---|---|
| Session Management | Bundle handles session storage for step data, but custom persistence (e.g., DB) may be needed for long-running flows. Risk: Session timeouts or large payloads. |
| Form State Corruption | If flow->reset() isn’t called, session data leaks. Risk: Inconsistent form states. |
| Symfony Version Lock | Hard dependency on Symfony 6/7. Risk: Future upgrades may require bundle updates. |
| Unmapped Fields | Requires manual handling (e.g., getStepData()). Risk: Data loss if not implemented. |
| Turbo/SPA Conflicts | Workarounds needed for Symfony UX Turbo. Risk: Poor UX if not configured properly. |
| Performance | Session-based storage could bloat memory for high-traffic flows. Risk: Scaling issues. |
Form + FormInterface::handleRequest() (for simple cases)?FormFlow is a service with configurable options.FormEvent).FormFlow for custom logic (e.g., preNextStep() hooks).| Component | Compatibility Notes |
|---|---|
| Symfony Form | Full compatibility (uses FormBuilder, FormInterface). |
| Validation | Supports Symfony’s validator constraints per step. |
| Security | CSRF protection is handled by Symfony Form. |
| Database ORMs | No direct integration, but step data can be manually saved to DB. |
| Symfony UX Turbo | Requires workarounds (e.g., HTTP_UNPROCESSABLE_ENTITY response). |
| API Platform | Not supported; designed for web templates. |
| Legacy Symfony | Not compatible with Symfony <6.0. |
composer require asmitta-01/formflow-bundle
Enable in bundles.php:
Asmitta\FormFlowBundle\AsmittaFormFlowBundle::class => ['all' => true],
*Flow.php class (extends FormFlow).loadStepsConfig().buildForm() to use options['flow_step'] for conditional fields.bind(), createForm(), isValid(), and nextStep() logic.@AsmittaFormFlow/FormFlow/buttons.html.twig).FormFlow.CraueFormFlowBundle).var_dump($this->flow->getStepData()) to inspect step data.debug:router to verify route handling.nextStep() or reset() calls.data-turbo="false".isValid().| Scenario | Impact | Mitigation Strategy |
How can I help you explore Laravel packages today?