Я работаю над модулем Joomla, у которого есть форма с настраиваемым полем, расширяющим класс JFormField.Я хотел бы использовать эту форму для отображения записи базы данных и позволить пользователю изменять сохраненные данные.Я создал настраиваемое поле для отображения списка на основе таблицы внешней базы данных.Все работает нормально, за исключением того, что я не могу предварительно установить значение настраиваемого поля для отображения значения в базе данных.Я попробовал два подхода, но ни один из них, похоже, не работает:
1:
$ form-> setFieldAttribute ('orderstatus', 'default', '1', $ group = null);
2:
$ form-> setValue ('orderstatus', 'main', '1');
Есть какие-нибудь рекомендации?Большое спасибо!
mod_gngtourdetails.php:
$filepath = dirname(__FILE__) . '/tourDetailsForm.xml';
$form=new JForm('mod_gngtourdetails');
$form->loadFile($filepath);
ModGngTourDetailsHelper::preFillForm($form, $tourDetails);
tourDetailsForm.xml
<form>
<fields name="main">
<fieldset name="basic" addfieldpath="/modules/mod_gngtourdetails/models/fields">
<field
name="ID"
type="text"
label="ID"
description="ID"
size="10"
maxlenght="10"
/>
<field
name="orderstatus"
type="orderstatus"
label="Order Status"
description="Order Status"
/>
orderstatus.php
class JFormFieldOrderStatus extends JFormField {
protected $type = 'orderstatus';
function getDB() {
...
return $db;
}
public function getInput() {
$db = JFormFieldOrderStatus::getDB();
$query = $db->getQuery(true);
$query->select($db->qn('ORDER_STATUS.NAME','NAME'));
$query->select($db->qn('ORDER_STATUS.ID','ID'));
$query->from($db->qn('ORDER_STATUS'));
$query->order('ORDER_STATUS.NAME ASC');
$rows = $db->setQuery($query)->loadObjectlist();
$result = '<select id="'.$this->id.'" name="'.$this->name.'">';
foreach($rows as $row){
$result .= '<option value="' . $row->ID .'" >' . $row->NAME . '</option>';
}
$result .= '</select>';
return $result;
}
}