เช่นผมอยากจะ validate ข้อมูลบน form ซึ่ง webfrom validation ไม่สามารถทำได้ เราจำเป็นต้องสร้าง custom module ขึ้นมาเพื่อจะทำงานนั้นๆ
การสร้าง custom module นั้นมี tutorial อยู่ที่ http://drupal.org/developing/modules หรือที่ ThaiTux ซึ่งได้แปลไว้เรียบร้อยแล้ว(อ่านแล้วงงนิดหน่อย) ซึ่งผมจะขออธิบายการสร้าง module ง่ายๆ คือ
การสร้าง module จำเป็นต้องมีไฟล์สำคัญอยู่ 2 ไฟล์คือ
- module_name.info
- module_name.module
; $Id$ name = leknarm description = leknarm hook module package = "Other" core = 6.x
โดยความหมายก็ตรงตัวเลยครับ
- name คือชื่อ
- description คือรายละเอียด
- package คือให้มันอยู่ package ไหน ในที่นี้คือ Other
- และ core คือใช้ได้กับ version อะไร
<?php // $Id$ /** * Implementation of hook_form(). */ function leknarm_form_alter(&$form, $form_state, $form_id) { if($form_id == 'webform_client_form_1') { $form['#submit'][] = 'leknarm_form1_submit'; } if($form_id == 'webform_client_form_2') { $form['#submit'][] = 'leknarm_form2_submit'; } } function leknarm_form1_submit($form, &$form_state) { // do anything } function leknarm_form2_submit($form, &$form_state) { // do anything } ?>จากด้านบน มีฟังก์ชัน
leknarm_form_alter
ซึ่งฟังก์ชันดังกล่าวเป็น hook ของ form โดยที่เมื่อมีการ request page ที่มี form ใดๆ มันจะไปเรียกฟังก์ชันดังกล่าวทันที ซึ่งในฟังก์ชันดังกล่าวเราเขียนไว้ว่า ถ้าเป็น form ที่มี id เป็น webform_client_form_1
มีการ submit ข้อมูลแล้วให้ไปเรียกฟังก์ชัน leknarm_form1_submit
นอกจากนี้เรายังสามารถทำ validation ได้โดยใช้คำสั่ง
$form['#validate'][]
แทนที่คำสั่ง $form['#submit'][]
ไม่มีความคิดเห็น:
แสดงความคิดเห็น