Adalah module untuk verifikasi user submitted data form. Module ini menggunakan library lib-validator untuk validasi data.

Instalasi

Jalankan perintah di bawah di folder aplikasi:

mim app install lib-form

Konfigurasi

Semua konfiguasi form disimpan di konfigurasi masing-masing module dengan bentuk seperti di bawah:

return [
    // ...
    'libForm' => [
        'forms' => [
            '/form-name/' => [
                '@extends' => ['form-name-1', 'form-name-2'],
                '/field-name/' => [
                    'label' => '/Field Label/',
                    'type'  => '/Field Type/',
                    // use only if provided module installed
                    'modules' => ['/module/'],
                    'rules' => [
                        // list of rules
                    ],
                    'filters' => [
                        // list of filters
                    ],
                    'children' => [
                        // list of children if any
                    ]
                ]
            ]
        ]
    ]
    // ...
];

Konfigurasi ini menggunakan struktur yang sama persis dengan lib-valiator. Kecuali properti label, type yang adalah bagian form field pada saat generasi html input elemnt.

@extends

Keyword ini digunakan untuk meng-extends rule dan field dari form lain.

Penggunaan

Ada beberapa cara untuk menggunakan form:

FormCollection

Cara pertama adalah dengan mengakses langsung class LibForm\Library\FormCollection:

use LibForm\Library\FormCollection;

$valid = FormCollection::validate($form_name, $preset_object);

Form

Cara kedua adalah membuat object form sendiri:

use LibForm\Library\Form;

$form = new Form($form_name);
$valid = $form->validate($preset_object);

Service Form

Cara ketiga adalah dengan menggunakan service:

$valid = $this->form->$form_name->validate($preset_object);

Service FormCollection

Cara keempat adalah dengan memanggil langsung fungsi FormCollection dari service:

$valid = $this->form->validate($form_name, $preset_object);

Method

Di bawah ini adalah daftar method-method yang dimiliki oleh form:

addError(string $field, string $code, string $text=null): void

Menambahkan manual error pada form. Jika nilai parameter text tidak didefinisikan, maka properti text dari error object diambil dari translasi berdasarkan error code. Sebagai catatan bahwa menambahkan error melalui metode ini tidak akan mengirimkan informasi rule pada translasi.

csrfField(string $name=’CSRFToken’): string

Menggenerasi html input hidden untuk token csrf prevention.

csrfTest(string $name=’CSRFToken’): bool

Menguji nilai csrf yang dikirimkan oleh form dari browser.

csrfToken(): string

Mengambil nilai token untuk csrf.

field(string $name, $options=null): string

Menggenerasi html input berdasarkan konfigurasi field pada form rules. Fungsi ini akan menggenerasi theme file di ./theme/[GATE]/form/field/[type].phtml dengan tembusan parameter field, options, value, dan form.

fieldExists(string $name): bool

Mengecek jika suatu field ada pada form ini.

getError(string $field): ?object

Mengambil informasi error field, jika ada.

getErrors(): array

Mengambil semua error yang terjadi pada form.

getFields(): object

Mengambil semua field yang akan di proses oleh module.

getName(): string

Mengambil nama form.

getResult(): ?object

Mengambil hasil akhir validasi form.

hasError(): ?bool

Mengecek jika ada error pada form.

setObject(object $object): void

Menset default form object.

validate(object $object=null): ?object

Memvalidasi object dan mengembalikan data sesuai dengan method getResult().