symfony-hackers/form-bundle
Symfony Hackers Form Bundle provides Symfony framework integration for form handling, bundling form-related services and configuration for Symfony applications. A small, low-adoption package; check compatibility and maintenance status before adopting.
FormServiceProvider, no config/ publish tag, and the form types all extend Symfony\Component\Form\AbstractType. Installing it into a Laravel app will autoload classes but won't wire anything up.Form/Type/ for the actual form type classes (the only genuinely transferable asset), DependencyInjection/ for the extension, and Resources/config/ for service definitions. Skim the type classes before anything else — that's where the useful field logic lives.FormRequest rule. That re-implementation is the realistic "install" for a Laravel developer.symfony/form directly and build forms manually. You do not need this bundle to do that — the bundle only adds pre-packaged types.AbstractType class into your app, replace __construct DI with container injection, register it in a service provider, and render it with a Blade component instead of a Twig form theme.<x-form.color .../>), a matching validation rule, and a @push('scripts') initializer — not as a form type.'constraints' => [new NotBlank()]) map almost 1:1 to Laravel rules inside a FormRequest. Keep the type-option → rule mapping table handy while porting.FormFactoryInterface in a SymfonyFormServiceProvider, then render with one Blade layout that approximates form_div_layout.html.twig. Most teams abandon this once they hit the template layer.Form::handleRequest() has no Laravel equivalent; use $request->validated() plus $model->fill() inside a form request or action class.AbstractType::setDefaultOptions() and getName() — that fatal on modern Symfony. Check every method signature before copying a type.Symfony\Component\HttpKernel\Bundle\Bundle. composer require can succeed while nothing auto-registers.Resources/views/ is Twig. Blade can't consume it, so the markup must be rewritten regardless of how cleanly the PHP ports.Resources/public/ via assets:install. Laravel's Vite pipeline won't see those files — re-bundle the JS/CSS yourself.form.vars don't exist in Laravel. Rely on @csrf, old(), and $errors.FormTypeInterface directly rather than extending AbstractType, and use configureOptions(OptionsResolver $resolver) to dodge deprecated option-resolver APIs.getBlockPrefix() on any type you port — a non-default prefix means the Twig theme lookup is the first thing that breaks, which usually manifests as a blank or unstyled field.How can I help you explore Laravel packages today?