symfony/form, symfony/validator) allow seamless integration via Composer. No native Laravel-specific features are required.Request integration) or standalone form definitions.Validator facade) may reduce reliance on Symfony Forms, but liform adds JSON Schema generation, which is valuable for:
cache() helper) to avoid regeneration on every request.| Risk Area | Mitigation Strategy |
|---|---|
| Symfony Dependency | Laravel’s symfony/form package is stable; test for version conflicts early. |
| Performance | Schema generation may be slow for complex forms. Benchmark and cache aggressively. |
| Laravel-Specific Gaps | Use Laravel’s FormRequest to wrap Symfony forms if needed for auth/middleware. |
| Schema Customization | Extend the package or use Symfony’s form events to modify schemas pre-generation. |
| Deprecation Risk | Monitor Symfony Form’s roadmap; prefer stable minor versions. |
composer require limenius/liform.symfony/form and symfony/validator for form definitions.FormSchemaResource) returning JSON Schema.FormRequest classes, manual form arrays).liform./schemas/user-registration).liform outputs.| Component | Compatibility Notes |
|---|---|
| Laravel Forms | Use Symfony\Component\Form\FormFactory to create forms from Laravel FormRequest. |
| Validation | Symfony’s validator integrates with Laravel’s Validator; ensure no conflicts. |
| Authentication | Wrap schema endpoints in Laravel middleware (e.g., auth:sanctum). |
| Caching | Cache schemas by form class name (e.g., Cache::remember('schema_UserCreateForm', ...)). |
| Testing | Use Laravel’s FormRequest tests to verify schema output. |
limenius/liform and Symfony Form/Validator.app/Forms/BaseForm.php) for consistency.EmailType, CollectionType).use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
class UserCreateForm extends AbstractType {
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add('name', TextType::class)
->add('email', EmailType::class);
}
}
use Limenius\Liform\JsonSchema\JsonSchemaGenerator;
$form = $formFactory->create(UserCreateForm::class);
$schema = (new JsonSchemaGenerator())->generate($form);
Route::get('/schemas/user-create', function () {
return response()->json($this->generateUserCreateSchema());
});
const schema = await fetch('/schemas/user-create').then(res => res.json());
liform logic in a service layer for easier swaps.dd($form->createView()) to inspect form structure.laravel, symfony-form, json-schema.How can I help you explore Laravel packages today?