Repository navigation
faq
Common questions about ArtisanPack UI Forms.
ArtisanPack UI Forms is a comprehensive form builder and management package for Laravel applications. It provides a drag-and-drop form builder, submission management, email notifications, file uploads, multi-step forms, conditional logic, and webhook integrations.
The package supports Laravel 11 and Laravel 12.
Yes, the package is built specifically for Livewire 3 and takes full advantage of its features.
composer require artisanpack-ui/forms
php artisan vendor:publish --provider="ArtisanPackUI\Forms\FormsServiceProvider"
php artisan migrateYes, update the configuration:
// config/artisanpack/forms.php
'admin' => [
'prefix' => 'my-custom-prefix',
],Or use an environment variable:
FORMS_ADMIN_PREFIX=my-custom-prefixBy default, the admin routes use ['web', 'auth'] middleware. Customize in config:
'admin' => [
'middleware' => ['web', 'auth', 'admin'],
],<livewire:forms::form-renderer slug="contact" />Yes:
use ArtisanPackUI\Forms\Models\Form;
use ArtisanPackUI\Forms\Models\FormField;
$form = Form::create([
'name' => 'Contact Form',
'slug' => 'contact',
'is_active' => true,
]);
FormField::create([
'form_id' => $form->id,
'type' => 'email',
'name' => 'email',
'label' => 'Email',
'required' => true,
'order' => 1,
]);The package includes 20+ field types including text, email, textarea, select, checkbox, radio, file upload, date, time, and more.
Yes, use the filter hook:
addFilter('forms.field_types', function ($types) {
$types['my-field'] = [
'label' => 'My Custom Field',
'view' => 'my-package::fields.my-field',
];
return $types;
});Submissions are stored in the form_submissions table with field values in form_submission_values.
Via admin interface or programmatically:
$exportService = app(ExportService::class);
$csv = $exportService->toCsv($form);By default, forever. Configure retention:
'submissions' => [
'retention_days' => 365,
],Yes, schedule the prune command:
Schedule::command('forms:prune-submissions')->daily();In the form-uploads disk, which defaults to storage/app/form-uploads/.
Configure in config/artisanpack/forms.php:
'uploads' => [
'allowed_mimes' => [
'application/pdf',
'image/jpeg',
'image/png',
// Add more...
],
],Default is 10MB. Configure:
'uploads' => [
'max_size' => 20480, // KB (20MB)
],Via the admin interface or programmatically:
FormNotification::create([
'form_id' => $form->id,
'type' => 'admin',
'recipients' => 'admin@example.com',
'subject' => 'New submission',
'message' => 'You have a new form submission.',
]);Yes, create an autoresponder notification:
FormNotification::create([
'form_id' => $form->id,
'type' => 'autoresponder',
'recipient_type' => 'field',
'recipient_field' => 'email',
'subject' => 'Thank you',
'message' => 'Thanks for contacting us!',
]);Yes, notifications are queued by default. Configure the queue:
'notifications' => [
'queue' => 'notifications',
],Set is_multi_step to true and add steps:
$form = Form::create([
'name' => 'Registration',
'is_multi_step' => true,
]);
FormStep::create([
'form_id' => $form->id,
'title' => 'Step 1',
'order' => 1,
]);Yes, add conditions to steps:
FormStep::create([
'form_id' => $form->id,
'title' => 'Business Info',
'conditions' => [
'rules' => [
['field' => 'account_type', 'operator' => 'equals', 'value' => 'business'],
],
],
]);The package includes honeypot fields and rate limiting. You can also integrate reCAPTCHA.
Yes, policies control access. Enable ownership enforcement:
'authorization' => [
'restrict_by_owner' => true,
],Yes, files are stored privately and validated for MIME type and size.
Yes, publish and edit:
php artisan vendor:publish --tag=forms-viewsYes, extend and register your own:
class CustomFormRenderer extends FormRenderer { }
Livewire::component('custom-form-renderer', CustomFormRenderer::class);- Troubleshooting - Common issues
- Installation - Getting started
- Configuration - All settings