Quá trình thao tác với form 31

Một phần của tài liệu cách xây dựng module cho Drupal và các vấn đề liên quan (Trang 37 - 40)

Biều đồ dưới đây mô tả quá trình xây dựng, kiểm tra tính hợp lệ và trình bày form.

Để có thể sử dụng Form API một cách hiệu quả, người phát triển phải biết được cách mà bộ máy phía sau API hoạt động.

32

33 Các bước trong quá trình xử lý:

• Khởi tạo: hàm drupal_get_form() bắt đầu bằng việc khởi tạo giá trị $form_values (mảng chứa các giá trị được gửi lên) bằng rỗng và $form_submitted bằng FALSE.

• Đặt một token: Drupal đặt giá trị khoá riêng cho mỗi bản cài đặt. Khi khoá được tạo ra sẽ được lưu trong bảng variables với trường drupal_private_key. Một token giả ngẫu nhiên dựa vào khoá này để kiểm tra một form khi được gửi lên. • Đặt ID: Một trường thông tin dạng ẩn chứa ID của form hiện tại sẽ được gửi đến

trình duyệt. Mỗi ID thường tương ứng với hàm định nghĩa của form và là tham số đầu tiên của drupal_get_form().

• Tập hợp thông tin các thành phần của form: Hàm element_info() sẽ được gọi. Hàm này sẽ thực thi hook_elements() trong tất cả các module có bản triển khai. Các thành phần cơ bản như nút checkbox, radio... được định nghĩa trong system.module. Một module cũng có thể tự định nghĩa kiểu thành phần riêng bằng cách sử dụng hook_elements().

• Tìm kiếm hàm kiếm tra giá trị: Một hàm kiểm tra giá trị có thể được gán bằng cách đặt thuộc tính #validate trong form vào một mảng với tên hàm là khoá và mảng khác làm giá trị.

• Tìm kiếm hàm gửi form: Hệ thống sẽ tìm kiếm những hàm có thuộc tính #submit và thực thi. Nếu không tìm thấy, Drupal thực thi hàm có ID plus_submit nếu có.

• Xây dựng form: Tại bước này, form sẽ được chuyển sang hàm form_builder() để xử lý thông qua một cây đệ quy và thêm các giá trị bắt buộc theo chuẩn. • Tìm hàm chuyển đổi giao diện cho form: Nếu giá trị $form[‘#theme’] được đặt

trong một hàm, Drupal sẽ sử dụng hàm đó. Nếu không, hàm theme_get_function() sẽ được gọi để xác định nếu có hàm giao diện cho form hiện tại.

• Thể hiện form trong HTML: Bộ xây dựng form sẽ gọi hàm drupal_render(). Đây là một hàm đệ quy, duyệt qua mỗi cấp của cây biểu diễn form và xử lý từng node. Với mỗi node, hàm drupal_render() sẽ phân tích thông tin của các thành phần có trong form và tạo ra mã HTML.

34

Một phần của tài liệu cách xây dựng module cho Drupal và các vấn đề liên quan (Trang 37 - 40)

Tải bản đầy đủ (PDF)

(57 trang)