4

次のphpを使用して、コンポーネント「/models/fields/time.php」にカスタムフィールドタイプを作成しました。

defined('JPATH_BASE') or die;

jimport('joomla.form.formfield');

class JFormFieldTime extends JFormField
{
    protected $type = 'time';

    public function getInput()
    {
        return '<select id="'.$this->id.'" name="'.$this->name.'">'.
        '<option value="08:00:00" > 8:00 AM</option>'.
        '<option value="09:30:00" > 9:30 AM</option>'.
        '</select>';
    }
}

そして私のcourse.xml(/models/forms/course.xml)それ自体:

   <field 
   name="starttime" 
   type="time" 
       label="COM_CEXPRESS_FORM_LBL_COURSE_STARTTIME"
       description="COM_CEXPRESS_FORM_DESC_COURSE_STARTTIME" 
       required="true" 
       filter="safehtml" />

フォームはデータベース内に正しい値を保存しますが(09:30:00)、フォームが表示されたとき(8:00 AM)、正しい値はselected="selected"ではありません。ただし、course.xmlフィールドを次のように変更すると、次のようになります。

   <field 
       name="starttime" 
       type="list" 
       label="COM_CEXPRESS_FORM_LBL_COURSE_STARTTIME"
       description="COM_CEXPRESS_FORM_DESC_COURSE_STARTTIME" 
       required="true" 
       filter="safehtml">
          <option value="08:00:00" > 8:00 AM</option>
          <option value="09:30:00" > 9:30 AM</option>
        </field>

フォームには、「選択された」データベース値が正しく表示されます(午前9時30分)。私はこのページごとにJoomlaDocsを使用しました:

http://docs.joomla.org/Creating_a_custom_form_field_type

4

1 に答える 1

4

選択したオプションは、 getInput()で自分で設定する必要があります。$this->valueで現在の値を取得できます。

要素を自分で印刷する代わりに、JHTMLで使用することもできます。

public function getInput()
{
    $options = array(
        '08:00:00' => '8:00 AM',
        '09:30:00' => '9:30 AM'
    );

    return JHtml::_('select.genericlist', $options, $this->name, null, 'value', 'text', $this->value, $this->id);
}

于 2012-09-16T18:16:07.283 に答える