Joomla, JForm: дата и время не сохраняются

Новичок в Joomla dev, написание простого внутреннего компонента, в котором у меня есть два поля даты. Одна — это дата, которую пользователь может выбрать во всплывающем окне календаря (1-я ниже), вторая — отметка даты/времени, которую пользователь не может изменить, но должен видеть, какой была последняя отметка времени. В форме редактирования первый (datepassed) работает и получает сегодняшнюю дату. Второй (отметка времени) работает только тогда, когда запись создана, и время вообще не сохраняется. Мне нужно, чтобы он всегда фиксировал текущее время и дату.

Из 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... хотя время.

Любые идеи, почему эта метка времени не работает, или есть лучший способ сделать это?

Спасибо!


person Gisto    schedule 28.08.2012    source источник
comment
Это только ваша форма, и дата доступна только для чтения, вам нужно показать свой код, который устанавливает/обновляет поле метки времени.   -  person Craig    schedule 29.08.2012
comment
Готово - я просто катаюсь на велосипеде по полям, так что показывать особо нечего.   -  person Gisto    schedule 29.08.2012
comment
Это просто код отображения, вы спрашиваете о сохранении значения, а как насчет вашего кода в вашей модели?   -  person Craig    schedule 29.08.2012
comment
Это все, что я использую. Первый (datepassed) отлично сохраняет дату и хранится в формате 0000-00-00 00:00:00 Как вы тоже получаете время - все мои выглядят как 2012-08-28 00:00:00 В файле выше сказано использовать NOW по умолчанию, но не так много о времени.   -  person Gisto    schedule 29.08.2012
comment
Я также немного отредактировал это, надеюсь, это яснее.   -  person Gisto    schedule 29.08.2012


Ответы (2)


Хорошо, из вашего обновленного вопроса видно, что происходит два простых недоразумения.

Значение default устанавливается только в том случае, если значение поля равно null, поэтому оно будет работать при первом сохранении, но впоследствии, поскольку есть значение, оно не будет заменено текущей отметкой времени.

Когда вы используете тип Calendar, он возвращает только дату без компонента времени. Если вы посмотрите на /libraries/joomla/html/parameter/element/calendar.php, вы увидите, что он запрашивает '%Y-%m-%d'

Чтобы обновить отметку времени, вам нужно изменить свою модель, чтобы при получении элемента он обновлял поле timestamp с текущей датой и временем, например. $item->timestamp = JFactory::getDate()

Или, возможно, обновите его только в store(), если вам нужно, чтобы он был точным в минутах и ​​секундах, поскольку возможно, что элемент может быть открыт и не сохранен в течение нескольких минут. Это, вероятно, лучший подход, так как вы хотите, чтобы ваш пользователь мог видеть время последнего сохранения элемента.

person Craig    schedule 29.08.2012
comment
Ах, это имеет больше смысла. Спасибо! - person Gisto; 29.08.2012

Есть более простой способ сделать то, что вы хотите, не нужно писать переопределение для модели, мы используем другой атрибут для поля типа календаря в 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"
 />
person Sasi varna kumar    schedule 25.12.2012
comment
Любое предложение для версии joomla 3.2 для format="%d-%m-%Y H:i:s", и она не работает в стабильной версии joomla 3.2.3 - person Kathir; 14.03.2014