Joomla,JForm:日期和时间是';t正在保存


Joomla, JForm: Date and time aren't being saved

Joomla-dev的新增功能,编写了一个简单的后端组件,其中有两个日期字段。一个是用户可以从日历弹出窗口中选择的日期(下面的第一个),第二个是用户无法更改但需要查看最后一个时间戳的日期/时间戳。在编辑表单中,第一个(datepassed)正在工作并获取今天的日期。第二个时间戳(timestamp)只在创建了记录并且根本没有保存时间时才起作用。我需要它来把握现在的时间和日期。

从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文档。。。不过在时间上并没有多大帮助。

你知道为什么时间戳不起作用吗,或者有更好的方法吗?

谢谢!

有一种更简单的方法可以做你想做的事情,不需要为模型写入覆盖,我们是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"
 />

好吧,从你更新的问题来看,似乎有两个简单的误解。

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

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

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

或者,如果你需要它的精确性,可能只在store()中更新它。可以想象,该项目可能会被打开,但几分钟内不会保存。这可能是一种更好的方法,因为您希望用户能够看到上次保存项目的时间。