Yii2 Form Builder: przeciągasz pole, dostajesz tabelę

Paleta pól, płótno formularza i wygenerowana tabela bazy danych.

yii2-forms to moduł do Yii2, który buduje formularze w przeglądarce i zapisuje każde zgłoszenie w osobnej tabeli bazy danych. Przeciągasz pola na płótno, zapisujesz, a moduł sam wykonuje zmianę schematu.

Interaktywne demo spod adresu /yii2-extensions/yii2-forms zostało wyłączone. Kod nadal jest publiczny: github.com/pceuropa/yii2-forms oraz strona rozszerzenia Yii.

Co potrafi

  • Kreator formularzy z przeciąganiem, sortowaniem, edycją i usuwaniem pól
  • CRUD przez AJAX, więc budowanie formularza nie przeładowuje strony
  • Schemat podąża za formularzem: nowy formularz tworzy tabelę, nowe pole dodaje kolumnę, zmiana nazwy pola zmienia nazwę kolumny
  • Widget renderujący, który waliduje zgłoszenia dynamicznym modelem
  • Opcjonalny RBAC, dzięki czemu formularz edytuje tylko właściciel

Instalacja

composer require pceuropa/yii2-forms
php yii migrate/up --migrationPath=@vendor/pceuropa/yii2-forms/migrations

Następnie zarejestruj moduł w konfiguracji aplikacji:

'modules' => [
    'forms' => [
        'class' => 'pceuropa\forms\Module',
        'formsTable' => '{{%forms}}',
        'formDataTable' => 'form_',
        'emailSender' => 'info@example.com',
    ],
],

Kreator działa pod /forms/module/create, lista formularzy pod /forms/module/index.

Renderowanie formularza

Wskaż widgetowi zapisany formularz po identyfikatorze:

use pceuropa\forms\Form;

echo Form::widget(['formId' => 1]);

Możesz też podać treść JSON wprost, co przydaje się na landing page’u trzymanym w repozytorium zamiast w bazie.

Kompromis

Moduł wykonuje DDL w czasie działania aplikacji. Na tym polega cały pomysł i to jest też główne ryzyko. Wynikają z tego dwie rzeczy:

  1. Użytkownik bazy potrzebuje na produkcji uprawnień CREATE TABLE i ALTER TABLE.
  2. Schemat przestaje być w całości opisany plikami migracji.

Przy formularzach marketingowych, ankietach i wewnętrznych kwestionariuszach zwykle się to opłaca. Przy danych, które czytają i łączą inne części aplikacji, napisz zwykły model i zwykłą migrację.

Stan paczki

Ostatnie wydanie to 3.0.4 z grudnia 2019, licencja MIT, wymagania PHP 7.0 i Yii 2.0. Moduł opiera się na jQuery i znacznikach Bootstrapa 3, więc w nowym projekcie Yii2 trzeba liczyć się z poprawkami w zasobach.

Traktuj to repozytorium jak działający punkt startowy, a nie utrzymywaną zależność: zrób fork, przypnij wersję i przeczytaj migrację, zanim uruchomisz ją na produkcyjnej bazie.

Potrzebujesz przeglądu procesu formularzy albo przeniesienia go na aktualny stos? Napisz: info@pceuropa.net