如何预设JFormField值?

时间:2018-05-27 14:46:10

标签: php joomla jform

我正在使用Joomla模块,该模块具有带有扩展JFormField类的自定义字段的表单。 我想使用此表单显示数据库记录,并让用户修改保存的数据。我创建了自定义字段以显示基于外部数据库表的列表。一切正常,但我无法预设自定义字段的值以显示数据库中的值。我尝试了两种方法,但它们似乎都不起作用:

1

$ form-> setFieldAttribute(' orderstatus','默认',' 1',$ group = null);

2:

$形式 - >的setValue(' orderstatus''主'' 1&#39);

有什么建议吗?非常感谢!

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;

    }
}

1 个答案:

答案 0 :(得分:0)

第一种方法应该有效,但应该是

$form->setFieldAttribute('orderstatus', 'default', '1', 'main');

另一件事是,你应该扩展JFormFieldList,特别是getOptions()函数。