Forms - v1.0.0-beta1

API Overview

This section provides technical documentation for the ArtisanPack UI Forms package classes and interfaces.

Namespace Structure

ArtisanPackUI\Forms\
├── Config\                  # Configuration classes
│   ├── FieldTypes.php
│   └── ConditionalLogic.php
├── Console\Commands\        # Artisan commands
│   └── PruneFormSubmissions.php
├── Events\                  # Event classes
│   ├── FormCreated.php
│   ├── FormUpdated.php
│   ├── FormDeleted.php
│   ├── FormSubmitted.php
│   ├── SubmissionUpdated.php
│   └── SubmissionDeleted.php
├── Facades\                 # Laravel facades
│   └── Forms.php
├── Http\
│   ├── Controllers\         # HTTP controllers
│   │   ├── FormController.php
│   │   └── SubmissionController.php
│   └── Requests\            # Form requests
│       ├── StoreFormRequest.php
│       └── UpdateFormRequest.php
├── Jobs\                    # Queue jobs
│   ├── SendFormNotification.php
│   └── SendWebhook.php
├── Listeners\               # Event listeners
│   └── SendWebhookOnSubmission.php
├── Livewire\                # Livewire components
│   ├── FormBuilder.php
│   ├── FormRenderer.php
│   ├── FormsList.php
│   ├── NotificationEditor.php
│   ├── SubmissionDetail.php
│   └── SubmissionsList.php
├── Mail\                    # Mailable classes
│   └── FormSubmissionNotification.php
├── Models\                  # Eloquent models
│   ├── Form.php
│   ├── FormField.php
│   ├── FormNotification.php
│   ├── FormStep.php
│   ├── FormSubmission.php
│   ├── FormSubmissionValue.php
│   └── FormUpload.php
├── Policies\                # Authorization policies
│   ├── FormPolicy.php
│   └── SubmissionPolicy.php
├── Services\                # Business logic services
│   ├── ConditionalLogicService.php
│   ├── ExportService.php
│   ├── FieldService.php
│   ├── FormService.php
│   ├── IntegrationService.php
│   ├── NotificationService.php
│   ├── StepService.php
│   └── SubmissionService.php
├── Forms.php                # Main package class
├── FormsServiceProvider.php # Service provider
└── helpers.php              # Global helper functions

Using the Facade

use ArtisanPackUI\Forms\Facades\Forms;

// Get a form by slug
$form = Forms::getBySlug('contact');

// Create a submission
$submission = Forms::submit($form, $data);

Dependency Injection

Inject services via constructor or method injection:

use ArtisanPackUI\Forms\Services\FormService;
use ArtisanPackUI\Forms\Services\SubmissionService;

class MyController extends Controller
{
    public function __construct(
        private FormService $formService,
        private SubmissionService $submissionService,
    ) {}

    public function store(Request $request, string $slug)
    {
        $form = $this->formService->getBySlug($slug);
        $submission = $this->submissionService->create($form, $request->all());

        return redirect()->back()->with('success', 'Form submitted!');
    }
}

Helper Functions

Global helper functions are available:

// Get accessibility helpers (from artisanpack-ui/accessibility)
$contrast = a11yGetContrastColor('#3b82f6');

// Get toast duration setting
$duration = getToastDuration();

Configuration Access

// Access configuration values
$prefix = config('artisanpack.forms.admin.prefix');
$maxSize = config('artisanpack.forms.uploads.max_size');

// Check if feature is enabled
$spamProtection = config('artisanpack.forms.spam_protection.honeypot.enabled');

Filter Hooks

Extend functionality using filter hooks:

use function addFilter;

// Modify validation rules
addFilter('forms.validation_rules', function ($rules, $form) {
    // Add custom rules
    return $rules;
});

// Modify notification message
addFilter('forms.notification_message', function ($message, $notification, $submission) {
    return $message;
});

// Modify webhook payload
addFilter('forms.webhook_payload', function ($payload, $form, $submission) {
    $payload['custom'] = 'data';
    return $payload;
});

Action Hooks

Execute code at specific points:

use function doAction;
use function addAction;

// Listen for form events
addAction('forms.submitted', function ($form, $submission) {
    // Custom processing
});

// Trigger custom actions
doAction('forms.submitted', $form, $submission);

Next Steps

  • Models - Eloquent model documentation
  • Services - Service class documentation
  • Events - Event documentation