我的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天?
提前感谢。
答案 0 :(得分:7)
单击日历图标时,日历窗口小部件会尝试将自己定位在相应文本字段中包含的日期。由于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();
}
}
?>
或更适合您特定应用的任何内容。
答案 1 :(得分:1)
对于像我这样的人来说,这可能对这个问题有所帮助,但是当前版本的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" />