php - 自定义表单日期和时间选择中的 Joomla 2.5 日历字段类型

标签 php xml joomla2.5

我的 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" /> 

这些基本上是文章发表的开始和结束日期。 however when selecting the datepicker/calendar icon and choosing a date the 字段更新为所选日期,但保留 09:30:00 默认开始时间。 这似乎适用于 01:30:00 到 11:30 之间的时间,任何下午时间都会在选择日期时重置为现在。

谁能解释一下为什么? 或者如何在日期选择器上保留默认时间?

如果结束日期也可以默认为从开始日期算起的 28 天?

提前致谢。

最佳答案

单击日历图标时,日历小部件会尝试将自己定位在相应文本字段中包含的日期上。作为0000-00-00是无效日期,Date.parseDatemedia/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 的自定义字段类型,这将为您提供充分的灵 active 。例如:

表单/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();
    }
}
?>

或更适合您的特定应用的任何东西。

关于php - 自定义表单日期和时间选择中的 Joomla 2.5 日历字段类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11648167/

相关文章:

php - 如何使用 TinyMCE textarea 编辑器作为一个类?

android - CardView 中心的 Fab 按钮

xml - 解码 XML 以构造并转换为 slice

Joomla 获取自定义父类别的子类别

php - 将 Joomla 数据库结果拆分为 3 列

PHP mySQL - 将新记录插入表中,主键自动递增

php - 如何添加自定义字段并将其显示在 woocommerce 的 admin-new-order.php 文件中?

php 包括不使用相对路径 - DocumentRoot 问题? MAMP?

java - 谜题 - 对文本进行排序?

javascript - 单击元素时加载页面后滚动到特定的 div