เช่นผมอยากจะ 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'][]
ไม่มีความคิดเห็น:
แสดงความคิดเห็น