0

Joomla 开发人员的新手,编写了一个简单的后端组件,其中我有两个日期字段。一个是用户可以从日历弹出窗口中选择的日期(下面的第一个),第二个是用户无法更改但需要查看最后一个时间戳的日期/时间戳。在编辑表单中,第一个(日期已通过)正在工作并获取今天的日期。第二个(时间戳)仅在创建记录并且根本不保存时间时才有效。我需要它来始终获取当前时间和日期。

从 XML 文件:

  <field name="datepassed"
    type="calendar"
    label="Date Completed"
    default="NOW"           
  /> 

  <field name="timestamp"
    type="calendar"
    label="Last Modified"
    default="NOW"
    readonly="true" 
    class="readonly"
  />

在 edit.php 视图中:

  foreach ($this->form->getFieldset('fields_logged') as $field): 
    echo '<li>';
        echo $field->label;
        echo $field->input; 
     echo '</li>';
  endforeach;

发现这个链接有一个类似的问题,而这个来自 Joomla 文档……虽然在时间上没有太大帮助。

任何想法为什么该时间戳不起作用,或者有更好的方法吗?

谢谢!

4

2 回答 2

1

有一种更简单的方法来做你想做的事,不需要为模型编写覆盖,我们它的另一个属性是 joomla 中的日历类型字段,请参阅 http://docs.joomla.org/Calendar_form_field_type

你可以在你的代码中使用,比如,

 <field name="datepassed"
type="calendar"
label="Date Completed"
default="NOW"    
 format="%d-%m-%Y H:i:s"
 /> 

<field name="timestamp"
type="calendar"
label="Last Modified"
default="NOW"
readonly="true" 
class="readonly"
format="%d-%m-%Y H:i:s"
 />
于 2012-12-25T05:35:23.093 回答
0

好的,从您更新的问题来看,似乎存在两个简单的误解。

default值仅在字段值设置时才设置,null因此它将在第一次保存时起作用,但随后由于有一个值,它不会被当前时间戳替换。

当您使用一种类型时,Calendar它只会返回日期而不是时间组件。如果你看一下/libraries/joomla/html/parameter/element/calendar.php你会发现它在要求'%Y-%m-%d'

要更新时间戳,您需要修改模型,以便在获取项目时timestamp使用当前日期和时间更新字段,例如$item->timestamp = JFactory::getDate()

或者,store()如果您需要精确到分钟和秒,则可以更新它,因为可以想象该项目可以打开并且不会保存几分钟。这可能是更好的方法,因为您希望您的用户能够看到上次保存项目的时间。

于 2012-08-29T05:20:59.480 回答