NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky
Forms for Laravel

Modely, scopy a mäkké mazanie

Form obsahuje dopytové scopy public(), active() (bez expirácie alebo ešte neexpirovaný), expired() a forKey($key). Group a Field ponúkajú ordered():

use RoundlyConsulting\Forms\Models\Form;

$openForms = Form::query()->public()->active()->get();

Form::query()->expired()->get();              // expires_at in the past
Form::query()->forKey('contact')->first();    // by key

$form->groups()->ordered()->get();            // Group::ordered() — by `order`
$group->fields()->ordered()->get();           // Field::ordered() — by `order`

Riadky Submission pridávajú scopy final() a draft(), FormSubmission pridáva pendingApproval().

Mäkké mazanie

Všetky modely používajú soft deletes — zmazaný formulár zostane v databáze aj s riadkami a odpoveďami, obnovíte ho cez restore() a dopytujete cez withTrashed(). Mazanie sa nekaskáduje, takže mäkké zmazanie formulára ponechá jeho skupiny, polia aj odpovede a staršie odpovede zostanú čitateľné aj po mäkkom zmazaní poľa, skupiny či formulára, na ktoré odpovedali.

Mäkko zmazaný formulár, skupina či pole uvoľní svoj kľúč: nový formulár ho môže prevziať (nová skupina či pole v rámci toho istého formulára či skupiny tiež) a forms:sync / Forms::update() ho znova vytvoria. Obnovenie záznamu si kľúč vezme späť — a zlyhá na porušení unikátneho obmedzenia, kým kľúč drží živý záznam:

$form->delete();   // soft delete — groups, fields and submissions stay intact, the key is freed

// A new form can take the freed key; forms:sync and Forms::update() re-create it.
// Restoring takes the key back — and fails while a live form holds it.
Form::withTrashed()->forKey('contact')->first()?->restore();

// Force-deleting a submission row also purges its attachment media.
$row->forceDelete();

Výmena modelov

Ktorýkoľvek záznam forms.models nasmerujte na vlastnú triedu, ak potrebujete ďalšie stĺpce, vzťahy či scopy. Vlastný model musí byť modelom balíka alebo z neho dediť — akákoľvek iná trieda vyhodí InvalidConfigurationException s názvom kľúča namiesto toho, aby sa potichu použil model balíka:

// config/forms.php
'models' => [
    'form' => \App\Models\Form::class,
    // ...
],

// app/Models/Form.php — must extend the package model
namespace App\Models;

class Form extends \RoundlyConsulting\Forms\Models\Form
{
    // extra columns, relations, scopes
}

Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

Ďalšie spôsoby podpory vrátane kryptomien

Odoslaním daru súhlasíte s našimi podmienkami prijímania darov.

Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.