การสร้าง 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);
}
}
?>
โค้ด: เลือกทั้งหมด
<field
name="user"
//type จะต้องระบุชื่อของไฟล์ .php ที่สร้างไว้ในโฟลเดอร์ fields
type="test"
label="User"
>
<option value="">Add User</option>
</field>
ในการทำ Drop Down เราสามารถดึงข้อมูลมาแสดงได้ใน Drop Down ให้ผู้ใช้งานเลือกได้ดังรูปด้านบน หรือหากจะทำเป็นแบบ Radio หรือ Checkbox ก็แค่เปลี่ยนชื่อจาก list ก็เป็น Radio หรือ Checkbox ตามที่ต้องการ
ช่องทางการศึกษาเพิ่มเติมข่าวที่น่าสนใจเกี่ยวกับ : Joomla