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

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:
- Użytkownik bazy potrzebuje na produkcji uprawnień
CREATE TABLEiALTER TABLE. - 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