- What is grafite/forms used for in Laravel?
- It is a Laravel package for defining forms as PHP classes and rendering them as HTML through Blade. It supports model binding, validation rules, reusable field definitions, and customization via grafite/builder. It fits server-rendered monoliths and admin panels, not API-first, Inertia, Livewire, or SPA surfaces where JSON is the output.
- How do I install grafite/forms?
- Install with composer require grafite/forms; the service provider is auto-discovered and config is publishable. It pulls in grafite/builder as a transitive dependency, so evaluate both. A 2022 release targets Laravel 8/9, so verify compatibility before installing in Laravel 10/11/12.
- Does grafite/forms support Laravel 10, 11, or 12?
- The last release was February 2022 and targets the Laravel 8/9 era. Compatibility with Laravel 10/11/12 and PHP 8.2+ is not proven and must be tested empirically, including config caching. Treat any upgrade as a fork-and-own risk until verified.
- Is grafite/forms maintained?
- No recent release exists; last publish was 2022-02-16, with 37 stars and zero dependents. There is no evidence of a maintainer response SLA. For production, assume defects become your responsibility and budget fork maintenance.
- What license does grafite/forms use?
- License scanning reports NOASSERTION, meaning automated tooling cannot clear it. Enterprise or SaaS distribution requires legal review of the upstream LICENSE file and provenance. Do not adopt it in a revenue-path or regulated product until cleared in writing.
- Can grafite/forms handle complex forms like multi-step wizards or nested fields?
- It handles class-based field definitions, validation, old-input repopulation, and error display for Blade forms. Repeatable/nested fieldsets, conditional visibility, multi-step wizards, file uploads, and polymorphic binding are not documented as first-class and may require custom grafite/builder extensions. Validate those cases with a spike before committing.
- How does grafite/forms compare to native Laravel Blade components and Form Requests?
- Native Blade components plus Form Requests keep you on supported Laravel code with no stale dependency or license ambiguity. Grafite Forms centralizes form class definitions and rendering but inverts control toward the package base class. Measure both on two representative forms; for API-first apps native rules already cover most value.
- Is grafite/forms safe for production?
- It carries abandonment, license ambiguity, and ecosystem isolation risks. You must audit field rendering, raw HTML attributes, and mass-assignment paths for XSS and authorization bypass. It is best limited to internal, low-blast-radius admin CRUD, not customer-facing or regulated forms.
- How do I test a form built with grafite/forms?
- There is no documented package-specific testing path; test the form class rules and submit handling as PHP units and assert rendered HTML with Laravel HTTP tests on your Laravel major. Include config caching enabled and a representative form with your custom fields. Because the package is unmaintained, pin the version and keep regression tests around any grafite/builder overrides.
- What are alternatives to grafite/forms for Laravel?
- Native Blade components with Form Requests, Livewire or Inertia form helpers, and maintained form builders are common alternatives. Choose based on rendering model: server-rendered Blade favors native components; SPA or API-first favors request validation and JSON resources. Grafite Forms only wins where class-based HTML form generation is a clear fit and the license and version risks are acceptable.