Xây dựng form với forms API

Events happening in the community are now at Drupal community events on www.drupal.org.
You are viewing a wiki page. You are welcome to join the group and then edit it. Be bold!

Tham khảo

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 formatphp 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 ...

AttachmentSize
formapi_01.jpg9.02 KB
fapi_workflow_reworked_lin_tall.gif45.57 KB