Tham khảo
- Dẫn nhập vào Form API (tiếng Anh): http://api.drupal.org/?q=api/file/developer/topics/forms_api.html/5
- Forms API Reference: http://api.drupal.org/api/5/file/forms_api_reference.html
- Hàm drupal_get_form: http://api.drupal.org/api/5/function/drupal_get_form
Dẫn nhập
Forms API của Drupal giúp người coder rất nhiều trong việc xây dựng ứng dụng dựa trên nền Drupal (nhanh, dễ, bảo mật).
Định nghĩa một form
Thí dụ ban sơ:
Nếu bạn đã cài đặt một website drupal thử nghiệm, thì vào trang ?q=node/add/page, rồi dán đoạn mã PHP sau vào phần nội dung, nhớ chọn input format là php code:
<?php
function first_form(){
$form = array();
$form['body'] = array(
'#type' => 'textarea',
'#title' => 'Nội dung',
'#required' => TRUE,
'#description' => 'Giới thiệu field'
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => 'gửi đi'
);
return $form;
}
print drupal_get_form('first_form');
?>Khi submit, nội dung của node vừa tạo sẽ giống như ảnh sau: http://groups.drupal.org/files/formapi_01.JPG
Từ đoạn PHP code ngắn gọn trên, chúng ta thấy,
- form được xuất ra bằng hàm drupal_get_form, với tham chuỗi là 'first_form'. Khi đó, hàm drupal_get_form sẽ tìm đến hàm có tên 'first_form' để tìm định nghĩa form, xây dựng rồi trả về đoạn HTML. Với lệnh print của PHP, nội dung HTML của form được xuất ra.
- Các phần tử của form được định nghĩa bởi các khai báo trong biến $form của hàm
first_form. Có một điều cần chú ý:
- Mỗi phần tử của form là một mảng trong biến mảng $form.
- Thứ tự xuất ra các phần tử của form phụ thuộc vào vị trí mà phần tử đó được khai báo (Thí dụ: phần tử 'submit' được khai báo sau phần tử 'body' nên phần tử này được xuất ra sau).
- Mảng định nghĩa mỗi phần tử có một cấu trúc nhất định. Và mỗi mảng này phải được định nghĩa với một số tối thiểu các khóa. Thí dụ: phần tử 'body' thì có các khóa '#type', '#title', '#description', ...
Validate một form
Đối với form được định theo Form API, khi người dùng submit một form, drupal sẽ tìm đến hàm FormID_validate($form_id, $form_values) để kiểm tra tính hợp lệ của form. Nếu form không hợp lệ drupal sẽ xuất ra form ra giao diện cùng với các công thông báo lỗi. Nếu form hợp lệ drupal sẽ gọi đến hàm FormID_submit($form_id, $form_values).
Ở thí dụ trên, chúng ta thấy phần tử $form['body'] được khai báo với khóa #required có giá trị TRUE. Thì trước khi drupal vào hàm kiểm tra hợp lệ, sẽ kiểm tra xem dữ liệu mà người dùng nhập vào, nếu rỗng sẽ báo lỗi. Chúng ta có thể mở rộng hàm kiểm tra hợp lệ này, thí dụ:
<?php
function first_form_validate($form_id, $form_values){
if(preg_match('/Thank/i', $form_values['body'] ){
form_set_error('', 'Xin chỉ sử dụng tiếng Việt');
}
}
?>Đệ trình form
Tham khảo (1) sẽ giúp bạn tra cứu các khóa cần thiết của mảng định nghĩa một phần tử form.
... tut chưa viết xong ...
| Attachment | Size |
|---|---|
| formapi_01.jpg | 9.02 KB |
| fapi_workflow_reworked_lin_tall.gif | 45.57 KB |