ช่วยสอนวิธีสร้าง form ได้ไหมครับ

  • warning: realpath() [function.realpath]: SAFE MODE Restriction in effect. The script whose uid is 1005 is not allowed to access /tmp owned by uid 0 in /var/www/sites/sugree/codenone.com/subdomains/www/html/includes/file.inc on line 190.
  • warning: realpath() [function.realpath]: SAFE MODE Restriction in effect. The script whose uid is 1005 is not allowed to access /tmp owned by uid 0 in /var/www/sites/sugree/codenone.com/subdomains/www/html/includes/file.inc on line 190.

พอดีลองไปอ่านใน form api แล้วไม่ค่อยเข้าใจครับ

ไม่ทราบว่าพอมี โมดูลย์ที่สามารถสร้างฟอร์มแบบง่ายๆได้ไหมครับ

ขอบคุณมากครับ

sugree's picture

ถ้าไม่คิดอะไรมากใช้ webform ก็ง่ายดี แต่ถ้าหมายถึงอยากเขียนโมดูลโดยใช้ Form API ก็เป็นอีกเรื่อง ลองดูตัวอย่างง่ายๆ ไอเดียก็คือเราอยากได้ฟอร์มที่มี input text กับปุ่ม submit ใน Drupal เราจะไม่เขียน HTML ตรงๆ มันไม่ยืดหยุ่น เราจึงให้กำหนดลักษณะของฟอร์มแบบละเอียดหน่อย แล้วค่อยเอาไปสร้าง HTML ทีหลัง

<?php
function test_form() {
  $form['name'] = array(
    '#type' => 'textfield',
    '#title' => t('Name'),
    '#size' => 30,
    '#maxlength' => 64,
    '#description' => t('Enter the name'),
  );
  $form['submit'] = array('#type' => 'submit', '#value' => t('Save'));
  return $form;
}
 
function test_page() {
  return drupal_get_form('test_form');
}
?>
keng's picture

หมายถึงเอาไปเขียนไว้ใน page ของ drupal ฤ?

sugree's picture

เขียนใน page ก็พอลุ้น ทางทฤษฎีก็พอจะเป็นไปได้ แต่ปกติเราจะทำฟอร์มใส่ในโมดูลมากกว่า

keng's picture

ไม่มีลุ้น ขาวจ๋อง :P

sugree's picture

ต้องเรียกมันด้วย

echo test_page();

ลืมบอก

Blue Rabbit's picture

ขอถามเรื่องการใช้โมดูล webform ครับ

เมื่อสร้าง form ขึ้นมาแล้ว form นั้นจะเป็น node หนึ่ง
แล้วเราจะสามารถดึง form นั้น (node นั้น) ไปใส่ไว้ในหน้า (page) ที่ต้องการได้อย่างไรครับ

sugree's picture

โหนด webform นั้นก็คือหน้าหนึ่ง ไม่ต้องสร้างหน้าใหม่นี่นา

ขอบคุณมากๆครับ

ลองก้อปโค้ดไปใส่ใน page แล้ว fatal error ครับ T T

ส่วน echo test_page(); เอาไปใส่ตรงไหนเหรอครับ?

ตอนนี้ จึงคิดว่าจะใช้ โมดูลย์ profile เพิ่ม field ที่ต้องการไปก่อนครับ

ยังไงก็ขอบคุณมากๆครับ

keng's picture

ถ้าเพิ่ม field ใหม่ cck ก็น่าจะพอะครับ

sugree's picture

งั้นลองแค่นี้

  $form['name'] = array(
    '#type' => 'textfield',
    '#title' => t('Name'),
    '#size' => 30,
    '#maxlength' => 64,
    '#description' => t('Enter the name'),
  );
  $form['submit'] = array('#type' => 'submit', '#value' => t('Save'));
 
  echo drupal_render($form);

เขียนโมดูลดีกว่าครับ อนาคตสดใส

ถ้าอยากเพิ่มฟิลด์ให้ผู้ใช้ก็ profile ถ้าอยากใส่ใน node ก็ cck ถ้าแค่อยากให้กรอก webform ก็พอ

ย้าย Codenone

ประกาศย้าย Codenone ไปใช้ Forum ของ Blognone แทนครับ ตามไปตั้งกระทู้ต่อได้ที่ Codenone Forum (รายละเอียดอ่านจากกระทู้ ย้าย Codenone ไปรวมกับ Blognone)

กระทู้เก่าๆ จะย้ายตามไปในภายหลัง ตอนนี้ปิดการโพสต์กระทู้ไว้ เหลือไว้เฉพาะอ้างอิงเท่านั้น