Исправление глюка с пустой датой в классе JFormFieldCalendar
В Joomla 3.X иногда стали проявляться глюки при заполнении поля календаря JFormFieldCalendar
При отображении пустой даты отображается некая дата отстоящая в недалеком прошлом, но на самом деле в параметрах оператора input присутствует значение value="-1-11-30" или value="-1-11-30 00:00:00" и при использовании данной даты joomla выдает ошибку. типа DateTime::__construct(): Failed to parse time string (-1-11-30 00:00:00) at position 5 (-): Double timezone specification
Лечить данный люк можно так:
Класс JFormFieldCalendar для отображения кода формы использует типовой слой шаблона. \layouts\joomla\form\field\calendar.php
Его можно переопределить в шаблонах. для админки это isis, а для морда - ваш шаблон.
Для этого нужно скопировать файл calendar.php в папки \administrator\templates\isis\html\layouts\joomla\form\field\ и \templates\ваш шаблон\html\layouts\joomla\form\field\ и добавить в них одну строку.
В районе строки 104 в код
// The static assets for the calendar JHtml::_('script', $localesPath, false, true, false, false, true); JHtml::_('script', $helperPath, false, true, false, false, true); JHtml::_('script', 'system/fields/calendar.min.js', false, true, false, false, true); JHtml::_('stylesheet', 'system/fields/calendar' . $cssFileExt, array(), true); ?> <div class="field-calendar">
Добавить строку:
// The static assets for the calendar JHtml::_('script', $localesPath, false, true, false, false, true); JHtml::_('script', $helperPath, false, true, false, false, true); JHtml::_('script', 'system/fields/calendar.min.js', false, true, false, false, true); JHtml::_('stylesheet', 'system/fields/calendar' . $cssFileExt, array(), true); $value = ($value == '-1-11-30' || $value == '-1-11-30 00:00:00')?'':$value; ?> <div class="field-calendar">