簡體   English   中英

Joomla 2.5日歷字段類型在自定義表單日期和時間選擇中

[英]Joomla 2.5 calendar field type in custom form date and time selection

我的admin / componsents / com_xxxxx / models / forms / xxxxx.xml文件中有兩個字段。

這些為Joomla 2.5后端的管理員提供輸入表單

<field name="f_start" type="calendar" class="inputbox" 
             required="true" 
             format="%Y-%m-%d %H:%M:%S"
             default="0000-00-00 09:30:00" 
             label="COM_xxxxx_F_START"
             description="COM_xxxxx_F_START_DESC" 
             filter="safehtml" /> 

<field name="f_end" type="calendar" class="inputbox"
             required="true" 
             format="%Y-%m-%d %H:%M:%S"
             default="0000-00-00 19:30:30" 
             label="COM_xxxxx_F_END"
             description="COM_xxxxx_F_END_DESC" 
             filter="safehtml" /> 

這些基本上是文章發布時的開始和結束日期。 但是,在選擇日期選擇器/日歷圖標並選擇日期時,該字段將更新為所選日期,但保留09:30:00默認開始時間。 這似乎適用於01:30:00到11:30之間的任何一個下午時間,當選擇日期時,重置到現在。

有誰能解釋為什么? 或者如何在日期選擇器上保留默認時間?

如果結束日期也可以默認為從開始日期起28天?

提前致謝。

單擊日歷圖標時,日歷窗口小部件會嘗試將自己定位在相應文本字段中包含的日期上。 作為0000-00-00是一個無效的日期, Date.parseDate在功能上media/system/js/calendar-uncompressed.js試圖猜測從格式字符串的所有組件的日期。 0000-00-00 09:30:00被認可為9月30日,因為09 < 12 ,所以它看起來像一個月號,因此它返回Sep 30, 9:30 另一方面, 0000-00-00 19:30:00未被識別為任何有效日期,並且該函數today返回。 因此,時間部分的差異。

例如,如果查看com_content的XML表單文件,您將看到它們不使用日歷字段的默認值。

但是,您可以創建從JFormFieldCalendar派生的自定義字段類型,這將為您提供充分的靈活性。 例如:

表格/ whatever.xml

<field name="f_start" type="PubDateCalendar"
       format="%Y-%m-%d %H:%M:%S" default="start" ... />
<field name="f_end" type="PubDateCalendar"
       format="%Y-%m-%d %H:%M:%S" default="end" ... />

田/ pubdatecalendar.php

<?php
defined('_JEXEC') or die;
jimport('joomla.form.helper');
JFormHelper::loadFieldClass('calendar');

class JFormFieldPubDateCalendar extends JFormFieldCalendar
{
    public $type = 'PubDateCalendar';
    protected function getInput()
    {
        $format = $this->element['format']
                ? (string) $this->element['format']
                : '%Y-%m-%d';
        if ($this->element['default'] == 'start') {
            $this->value = strftime($format);
        } else if ($this->element['default'] == 'end') {
            $this->value = strftime($format, time() + 28 * 24 * 60 * 60);
        }
        return parent::getInput();
    }
}
?>

或者更適合您特定應用的任何東西。

也許這會對像我這樣的人有所幫助,他們正在尋找這個問題的答案,但是對當前版本的Joomla 3.3.6:

<field
  name="birth_day"
  type="calendar"
  label="COM_PERSONS_PERSON_FIELD_BIRTHDAY_LABEL"
  description="COM_PERSONS_PERSON_FIELD_BIRTHDAY_DESC"
  class="inputbox" 
  size="20"
  format="%Y-%m-%d"
  filter="user_utc" />

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM