Nhảy tới nội dung
Phiên bản: 7.3.3

Form

SkillDo cung cấp thư viện mạnh mẽ để làm việc với Form

Tạo Form

Để tạo một Form bạn cần khởi tạo một đối tượng từ class Form

use SkillDo\Form\Form;
$form = new Form();

Hoặc sử dụng function toàn cục form

$form = form();

Để set id cho Form bạn dùng phương thức setFormId:

$form = new Form();
$form->setFormId('my_form_id');

Nếu đây là form dùng để upload file bạn dùng phương thức setIsUpload để hệ thống biết đây là form upload:

$form->setIsUpload(true);

Form SkillDo có cung cấp cơ chế tự động Validation field bằng JS ở frontend, để kích hoạt cơ chế này bạn có thể sử dụng phương thức setIsValid với biến là nhận vào là true

$form->setFormId('my_form_id');
$form->setIsValid(true);

Khi kích hoạt Validation bắt buộc form phải có id nếu bạn không setFormId hệ thống sẽ tự sinh ra Id duy nhất cho Form

Để kích hoạt JS Validation form phải được submit bằng buttontype là submit và name khác submit

Sau khi form Validation thành công bạn không muốn send submit cho backend mà sẽ thực hiện một thao tác js nào đó ví dụ như gửi data form đến ajax thì có thể sử dụng phương thức setCallbackValidJs:

$form->setFormId('my_form_id');
$form->setIsValid(true);
$form->setCallbackValidJs('myFormSubmitHandler');

Js

function myFormSubmitHandler(form) {
let data = form.serializeJSON();
return false;
}

Thêm Field Vào Form

Sau khi khởi tạo được form bạn cần thêm các Field cần thiết vào form, để thêm Field vào form bạn có thể sử dụng một trong hai cách sau:

sử dụng phương thức add để thêm Field:

$form->add(string $name, string $type, array $args, mixed $value);
Column NameTypeDescription
$namestringTên của Field
$typestringLoại field ví dụ như (text, select, checkbox...)
$argsarrayCác attributes hoặc cấu hình field
$valuemixedGiá trị value của field

hoặc sử dụng thuộc tính động của Form ví dụ như thêm field text:

$form->text('myField', ['label' => 'My Field'], 'value');

với $args bạn có thể thêm các attributes vào field hoặc cấu hình field nếu Form hỗ trợ, sau đây là một số cấu hình chung cho taất cả các field:

start : (string hoặc int) chèn thêm mã html vào đầu field, nếu giá trị start nhận vào là một số sẽ tự động chèn

<div class="col-md-'.$start.' form-group">

end : (string) chèn thêm mã html vào cuối field, nếu start là một số nguyên end sẽ tự động đóng field bằng div

label : (string) label của field

validations : Thêm điều kiện validation cho field

Danh sách Field và thuộc tính của Field xem tại đây

Hiển Thị Form

Để hiển thị Form bạn sử dụng ba phương thức open, htmlclose

echo $form->open();
echo $form->html();
echo $form->close();

Với phương thức open nhận vào hai đối số:

ParamsTypeDescriptionMặc định
$methodstringLoại form (get, post)post
$attributesarrayCác attributes hoặc cấu hình form

Tham số $attributes chứa một số cấu hình form:

ParamsTypeDescriptionMặc định
validationboolNếu là true tương đương với setIsValid(true)
callbackstringTương đương với phương thức setCallbackValidJs
classarrayDanh sách các class chèn thêm vào formnull
stylestring, arraychèn css inline vào thẻ formnull
filestringNếu true sẽ chèn thêm multipart/form-data vào formfalse

Ngoài ra bạn còn có thể chèn các attribute khác với các cập key/value

$form->open('post', [
'validation' => true,
'callback' => 'myFormSubmitHandler',
'class' => ['my-class'],
'style' => ['font-size' => '18px'],
'data-id' => 'myForm'
]);

Ngoài ra khi method của bạn là POST, PUT or DELETE thì CSRF token sẽ được tự động thêm vào form với 1 trường ẩn dạng hidden