ถ้าใช้เป็น XML Form ของ Component ต้องสร้าง Field สำหรับใช้ใน XML มาก่อน
ในโฟลเดอร์ models ต้องมีโฟลเดอร์ fields ให้สร้างไฟล์ .php กำหนดชื่อตามข้อมูลที่ต้องการดึงมาแสดง เช่น provinces.php
ตัวอย่างโค้ด models/fields/provinces.php โค้ด: เลือกทั้งหมด
<?php
defined('_JEXEC') or die;
JFormHelper::loadFieldClass('list');
class JFormFieldProvinces extends JFormFieldList
{
protected $type = 'Provinces';
public function getOptions()
{
$db = Joomla\CMS\Factory::getDbo();
$query = $db->getQuery(true)
->select('xx AS value, xx AS text')
->from('#__xxxxxxxxx')
->where($db->qn('xxxx') . '=' . $db->q('xxxx'));
$db->setQuery($query);
$arr_options = $db->loadObjectList();
return array_merge(parent::getOptions(), $arr_options);
}
}
- การตั้งชื่อ Class ขึ้นต้นด้วย JFormField แล้วต่อด้วยชื่อไฟล์ เช่น ไฟล์ชื่อ provinces.php จะได้ JFormFieldProvinces
- protected $type เอามาจากชื่อไฟล์
- ใน function getOptions() เป็นการดึงข้อมูลจากตารางที่ต้องการ
- ใน select จะต้องกำหนดค่าที่จะเป็น value และข้อความที่แสดงใน Options นึกถึงตอนเขียน <select> จะมี <option value="***">***</option>
หลังจากเสร็จจากการสร้าง Field ให้นำ Field ไปใช้ใน Form
โค้ด: เลือกทั้งหมด
<field
name="xxxxx"
type="provinces"
label="xxxxx">
<option value="">xxxxx</option>
</field>