การสร้าง Field สำหรับ XML Form ในระบบ Joomla

แชร์ ความรู้ในการ พัฒนา Joomla Component Extension Module Plugin

Moderator: mindphp, ผู้ดูแลกระดาน

ภาพประจำตัวสมาชิก
Parichat
PHP VIP Members
PHP VIP Members
โพสต์: 2443
ลงทะเบียนเมื่อ: 08/01/2018 10:03 am

การสร้าง Field สำหรับ XML Form ในระบบ Joomla

โพสต์โดย Parichat » 21/05/2018 2:52 pm

การสร้าง Field (ฟิล) สำหรับ XML Form ในระบบ Joomla

การสร้าง Field (ฟิล) สำหรับ XML Form (เอ็กเอ็มแอลฟอร์ม) ในระบบ Joomla ใช้สำหรับทำตัว Drop Down, Radio, Checkbox เป็นต้น โดยจะใช้ในกรณีที่ดึงข้อมูลจากฐานข้อมูลมาแสดงในฟอร์มนั้น โดยมีวิธีการสร้างดังนี้

วิธีการสร้าง Field (ฟิล) สำหรับ XML Form ในระบบ Joomla ดังนี้ (ตัวอย่างจะสร้างในส่วนของโมดูลสร้างแบบ Drop Down)
1.สร้างไฟล์นามสกุล .php ไว้ในโฟลเดอร์ fields (ถ้าใน Component จะสร้างในโฟลเดอร์ fields เหมือนกันแต่โฟลเดอร์ fields จะอยู่ในโฟลเดอน์ models อีกทีนึง)

2.เพิ่มโค้ดลงในไฟล์นามสกุล .php ดังนี้

โค้ด: เลือกทั้งหมด

<?php
/**
 * @package     Module MD Test
 * @subpackage  mod_md_test
 * @author      Mindphp Developer Teams
 * @copyright   Copyright (C) 2018 Mindphp. All rights reserved.
 * @license     GNU General Public License version 2 or later
 */
//เป็นตัวที่ป้องกันไม่ให้เข้าใช้งานไฟล์นี้ได้โดยตรงแต่จะต้องเข้าผ่านระบบของตัว Joomla เท่านั้น
defined('_JEXEC') or die();
//เป็นตัวที่จะกำหนดว่า fields นี้ใช้ทำอะไรเช่นใช้เป็น Drop Down ตัว loadFieldClass ก็จะเป็น loadFieldClass('list') แต่ถ้าเป็นอันอื่นก็จะเปลี่ยนตามที่ต้องการจะสร้าง
JFormHelper::loadFieldClass('list');
//JFormFieldList จะเป็นตัวที่บอกชื่อของ Field โดยถ้า Field นี้ใช้ทำอะไรชื่อที่ตามหลังก็จะเป็นชื่อเดียวกันเช่น Field นี้ต้องการสร้าง Drop Down ตัวที่ตรงด้านหลังก็จะเป็น List และJFormFieldTest โดย JFormField จะตามหลังด้วยชื่อของไฟล์นามสกุล .php ที่สร้างไว้ เช่นไฟล์ .php ชื่อ test.php ก็สามารถเขียนได้เป็น JFormFieldTest
class JFormFieldTest extends JFormFieldList
{
    //ระบุ type โดยจะต้องใส่ชื่อให้ตรงกับชื่อไฟล์ .php
    protected $type = 'Test';
    //ฟังก์ชันที่ใช้ในการติดต่อฐานข้อมูล
    protected function getOptions()
   {
                $db = Joomla\CMS\Factory::getDbo();
                //คำสั่ง SQL ที่จะดึงข้อมูลมาแสดง
                $query = $db->getQuery(true)
                        ->select('id AS value, name AS text')
                        ->from('#__users');
                $db->setQuery($query);
                $users = $db->loadObjectList();
               
                return array_merge(parent::getOptions(), $users);
        }
}
?>


3.สร้างฟอร์มในไฟล์ .xml ดังนี้

โค้ด: เลือกทั้งหมด

<field
   name="user"
   //type จะต้องระบุชื่อของไฟล์ .php ที่สร้างไว้ในโฟลเดอร์ fields
   type="test"
   label="User"
   >
   <option value="">Add User</option>
</field>


4.ผลลัพธ์ที่ได้ในฝั่งของผู้ดูแลระบบ
รูปภาพ

ในการทำ Drop Down เราสามารถดึงข้อมูลมาแสดงได้ใน Drop Down ให้ผู้ใช้งานเลือกได้ดังรูปด้านบน หรือหากจะทำเป็นแบบ Radio หรือ Checkbox ก็แค่เปลี่ยนชื่อจาก list ก็เป็น Radio หรือ Checkbox ตามที่ต้องการ

ช่องทางการศึกษาเพิ่มเติมข่าวที่น่าสนใจเกี่ยวกับ : Joomla
Live Simply, Laugh Often, Love Deeply.....

ย้อนกลับไปยัง

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: 1 และ บุคคลทั่วไป 0 ท่าน