แสดงบทความที่มีป้ายกำกับ drupal form แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ drupal form แสดงบทความทั้งหมด

วันศุกร์ที่ 17 ธันวาคม พ.ศ. 2553

สร้าง module ใน drupal

ถึง drupal จะยืดหยุ่นมากจนเราทำอะไรก็ได้ใน content จะเขียน php ลงใน content โดยใช้ php filter หรือจะทำ cck field สำหรับ download ไฟล์ แต่มันก็ยังไม่เพียงพอสำหรับการทำงานบางอย่างของ site ของเรา

เช่นผมอยากจะ validate ข้อมูลบน form ซึ่ง webfrom validation ไม่สามารถทำได้ เราจำเป็นต้องสร้าง custom module ขึ้นมาเพื่อจะทำงานนั้นๆ

การสร้าง custom module นั้นมี tutorial อยู่ที่ http://drupal.org/developing/modules หรือที่ ThaiTux ซึ่งได้แปลไว้เรียบร้อยแล้ว(อ่านแล้วงงนิดหน่อย) ซึ่งผมจะขออธิบายการสร้าง module ง่ายๆ คือ

การสร้าง module จำเป็นต้องมีไฟล์สำคัญอยู่ 2 ไฟล์คือ
  1. module_name.info
  2. module_name.module
ซึ่ง file info จะประกอบด้วยส่วนสำคัญคือ

; $Id$
name = leknarm
description = leknarm hook module
package = "Other"
core = 6.x

โดยความหมายก็ตรงตัวเลยครับ
  • name คือชื่อ
  • description คือรายละเอียด
  • package คือให้มันอยู่ package ไหน ในที่นี้คือ Other
  • และ core คือใช้ได้กับ version อะไร
เมื่อสร้างไฟล์ info เสร็จแล้วเราก็มาสร้างไฟล์ module กัน

<?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'][]
Continue Reading...

วันพฤหัสบดีที่ 7 ตุลาคม พ.ศ. 2553

ทำ image ให้เป็น button ใน drupal from

ห่างหายกับการเขียน blog ไปนาน วันนี้จะมาเขียนเรื่องการทำรูปให้เป็นปุ่ม button แต่ทำใน drupal กัน

ก่อนอื่นต้องบอกก่อนว่าใน html นั้นเวลาทำ input ที่มี type เป็น image, image นั้นๆ จะทำหน้าที่เป็น submit button โดยอัตโนมัติ คราวนี้เราอยากจะใส่ <input type="image" src="/path/to/image" /> ใน drupal แต่ปัญหาดันเกิดขึ้นที่ต้องใช้ drupal api น่ะสิจะทำยังไง

จากการ google ดูเราได้หน้า API Quickstart ของ drupal มาเป็นหน้านี้

http://drupal.org/node/751826

แต่ว่าดันไม่มี example ของ image เลย ก็เลยลองหาก็ไปเจอหน้า API Reference

http://api.drupal.org/api/drupal/developer--topics--forms_api_reference.html/6

ซึ่งบอกไว้ว่า type image นั้นใน drupal ต้องเขียนว่า image_button ซึ่งถ้าจะเขียนในรูปแบบ drupal form api จะเขียนได้ดังนี้

<?php
$form['example'] = array(
  '#type' => 'image_button',
  '#value' => 'path/to/your/image',
);
?>

แค่นี้เราก็จะได้ form image button โดยใช้ drupal api แล้วครับ
Continue Reading...

Blogroll

About