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()
中更新它。可以想象,该项目可能会被打开,但几分钟内不会保存。这可能是一种更好的方法,因为您希望用户能够看到上次保存项目的时间。