Installation
composer require skywalker-labs/formcraft
php artisan vendor:publish --provider="SkywalkerLabs\Formcraft\FormcraftServiceProvider" --tag="config"
php artisan migrate
config/app.php under providers.Basic Setup
php artisan vendor:publish --provider="SkywalkerLabs\Formcraft\FormcraftServiceProvider" --tag="config"
config/formcraft.php to match your app’s needs (e.g., theme, storage paths).First Use Case: Simple Form
use SkywalkerLabs\Formcraft\Facades\Formcraft;
$form = Formcraft::make('contact-form')
->addText('name', 'Name')
->addEmail('email', 'Email')
->addSubmit('submit', 'Send');
{!! $form->render() !!}
Livewire Integration
FormcraftLivewire to handle form submissions:
use SkywalkerLabs\Formcraft\Livewire\FormcraftLivewire;
class ContactForm extends FormcraftLivewire
{
public $form = 'contact-form';
}
<livewire:contact-form />
$form = Formcraft::make('dynamic-form')
->addSelect('country', 'Country', ['US' => 'USA', 'CA' => 'Canada'])
->addCheckbox('terms', 'Accept Terms');
config/formcraft.php:
'theme' => 'tailwind', // or 'bootstrap'
class="formcraft-input w-64").$form = Formcraft::make('signup-form')
->addText('username', 'Username')
->rules('username', 'required|min:3');
protected function submit()
{
$data = $this->validate();
// Process $data (e.g., save to DB)
}
TextInput) by publishing views:
php artisan vendor:publish --provider="SkywalkerLabs\Formcraft\FormcraftServiceProvider" --tag="views"
FormcraftComponent interface:
class CustomComponent implements FormcraftComponent {
public function render(): string { ... }
}
$form->addText('name', 'Name')->attr('aria-describedby', 'name-help');
php artisan livewire:discover
!important sparingly or scope Formcraft styles:
.formcraft { @apply ... }
->rules()->merge() for additive rules.$form->onSubmit(function ($data) {
\Log::info('Submitted:', $data);
});
config/formcraft.php:
'minify' => false,
FormcraftStorage:
$app->bind('formcraft.storage', function () {
return new CustomFormStorage();
});
formcraft.before_submit):
Formcraft::listen('formcraft.before_submit', function ($form, $data) {
// Modify $data or cancel submission
});
php artisan vendor:publish --provider="SkywalkerLabs\Formcraft\FormcraftServiceProvider" --tag="lang"
@include('forms.partials.step1', ['form' => $form->step('step1')])
$form->addText('address')->conditional('show_address', true);
->disableCsrf() for APIs) and enable minify in production.How can I help you explore Laravel packages today?