2

admin/componsents/com_xxxxx/models/forms/xxxxx.xml ファイルに 2 つのフィールドがあります。

これらは、Joomla 2.5 のバックエンドで管理者用の入力フォームにフィードされます

<field name="f_start" type="calendar" class="inputbox" 
             required="true" 
             format="%Y-%m-%d %H:%M:%S"
             default="0000-00-00 09:30:00" 
             label="COM_xxxxx_F_START"
             description="COM_xxxxx_F_START_DESC" 
             filter="safehtml" /> 

<field name="f_end" type="calendar" class="inputbox"
             required="true" 
             format="%Y-%m-%d %H:%M:%S"
             default="0000-00-00 19:30:30" 
             label="COM_xxxxx_F_END"
             description="COM_xxxxx_F_END_DESC" 
             filter="safehtml" /> 

これらは基本的に、記事が公開される開始日と終了日です。ただし、日付ピッカー/カレンダー アイコンを選択して日付を選択すると、選択した日付にフィールドが更新されますが、デフォルトの開始時刻は 09:30:00 のままです。これは、01:30:00 から 11:30 までの時間で機能するようで、日付が選択されると、午後の時間が現在にリセットされます。

誰でも理由を説明できますか?または、日付セレクターでデフォルト時間を維持する方法は?

終了日も開始日から 28 日にデフォルト設定できる場合は?

前もって感謝します。

4

2 に答える 2

7

カレンダー アイコンをクリックすると、カレンダー ウィジェットは対応するテキスト フィールドに含まれる日付に配置しようとします。0000-00-00無効な日付であるため、 の関数Date.parseDatemedia/system/js/calendar-uncompressed.js、書式文字列のすべてのコンポーネントから日付を推測しようとします。0000-00-00 09:30:00は 9 月 30 日として認識されます。09 < 12月の数字のように見えるため、 が返されますSep 30, 9:30。一方、0000-00-00 19:30:00は有効な日付として認識されず、関数は を返しますtoday。したがって、時間部分の違い。

たとえば、com_content の XML フォーム ファイルを見ると、カレンダー フィールドにデフォルト値が使用されていないことがわかります。

ただし、完全な柔軟性を提供する JFormFieldCalendar から派生したカスタム フィールド タイプを作成することもできます。例えば:

フォーム/whatever.xml

<field name="f_start" type="PubDateCalendar"
       format="%Y-%m-%d %H:%M:%S" default="start" ... />
<field name="f_end" type="PubDateCalendar"
       format="%Y-%m-%d %H:%M:%S" default="end" ... />

fields/pubdatecalendar.php

<?php
defined('_JEXEC') or die;
jimport('joomla.form.helper');
JFormHelper::loadFieldClass('calendar');

class JFormFieldPubDateCalendar extends JFormFieldCalendar
{
    public $type = 'PubDateCalendar';
    protected function getInput()
    {
        $format = $this->element['format']
                ? (string) $this->element['format']
                : '%Y-%m-%d';
        if ($this->element['default'] == 'start') {
            $this->value = strftime($format);
        } else if ($this->element['default'] == 'end') {
            $this->value = strftime($format, time() + 28 * 24 * 60 * 60);
        }
        return parent::getInput();
    }
}
?>

または、特定のアプリケーションにより適したものは何でも。

于 2012-11-22T23:56:40.717 に答える
1

多分これは、この質問に対する答えを探していたが、Joomla 3.3.6 の現在のバージョンで私のような人に役立つでしょう:

<field
  name="birth_day"
  type="calendar"
  label="COM_PERSONS_PERSON_FIELD_BIRTHDAY_LABEL"
  description="COM_PERSONS_PERSON_FIELD_BIRTHDAY_DESC"
  class="inputbox" 
  size="20"
  format="%Y-%m-%d"
  filter="user_utc" />
于 2015-01-13T00:45:00.270 に答える