0

Joomla devの新機能で、2つの日付フィールドがある単純なバックエンドコンポーネントを記述しています。1つはユーザーがカレンダーポップアップから選択できる日付(1つ目は下)、2つ目はユーザーが変更できない日付/タイムスタンプですが、最後のタイムスタンプが何であったかを確認する必要があります。編集フォームでは、最初のフォーム(datepassed)が機能しており、今日の日付を取得しています。2番目(タイムスタンプ)は、レコードが作成され、時間がまったく保存されていない場合にのみ機能します。常に現在の時刻と日付を取得するために必要です。

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

さて、あなたの更新された質問から、2つの単純な誤解が起こっているようです。

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 に答える