Комментарии

Поведение всплывающего календаря в Joomla
( 0 Голосов )

Этот вид поведения создает всплывающий календарь, дающий пользователю возможность ввести дату с помощью визуального календарного виджета. Ниже приведен пример такого календарного виджета из экранной формы редактирования статьи.

Такой виджет может быть введен на странице одним из двух способов. Самый простой способ состоит в использовании поля объекта типа JForm, в атрибуте type которого задан календарь. Например, выделенный полужирным код в приведенном ниже фрагменте разметки из файла administrator/components/com_content/models/forms/article.xml предписывает объекту типа JForm воспроизвести данное поле с всплываю-щим календарем.

<field name="created"  type="calendar" label="COM_CONTENT_FIELD_CREATED_LABEL" description="COM_CONTENT_FIELD_CREATED_DESC" size="22" format="%Y-%m-%d %H:%M:%S" filter="user_utc"   />

Напомним, что атрибут type определяет, какой именно класс типа JFormField используется для воспроизведения поля. В данном случае из класса JFormFieldCalendar вызывается метод getInput (). Ниже приведена последняя строка кода из этого метода.

return JHtml::_('calendar', $this->value, $this->name, $this->id, $format, $attributes) ;

В этой строке вызывается метод JHtml:: calendar () для воспроизведения поля календаря.

Если же календарь требуется использовать за пределами формы типа JForm, то метод JHtml:: calendar () можно вызвать непосредственно. В таком случае ему в качестве аргументов передаются дата, имя поля, идентификатор поля, формат даты, а также массив с любыми дополнительными атрибутами, которые требуются для разметки поля в формате HTML. Например, в приведенном ниже фрагменте кода из файла administrator/components/com_banners/views/tracks/tmpl/default.php формируется начальная дата для фильтра дат на экране Banner Manager: Tracks (Диспетчер баннеров: Каналы отслеживания баннеров).

<?php echo JHtml::_('calendar',$this->state->get('filter.begin'), 'filter_begin', 'filter_begin','%Y-%m-%d', $array('size'=>10, 'onchange'=>"this.form.fireEvent",('submit');this.form.submit()"));?>

В данном примере кода указываемый в качестве аргумента массив содержит два атрибута разметки в формате HTML: size, задающий размер поля, а также onchange, определяющий условие предъявления формы всякий раз, когда в поле f ilter_begin вносятся изменения. Таким образом, страница перезагружается с нужными элементами, когда в поле filter_begin происходят изменения.

Каким бы способом ни создавался календарь, вводить в код вызов метода поведения JHtml::_ ('behavior.calendar') совсем не обязательно. Ведь это делается автоматически в методе JHtml:: calendar ().


Понравился материал? Пригодилась информация? Плюсани в социалки!


 
Похожие новости
Добавить комментарий


Защитный код