Комментарии

Метод display () из класса WeblinksViewWeblinks
( 0 Голосов )

В этом методе, по существу, начинается создание веб-страницы. В трех первых строках его кода из модели поочередно вызываются методы getState (), getltems () и getPagination (). В частности, из представления вызывается метод get () для получения модели и поиска в ней метода под именем, состоящим из префикса get и строки аргумента (например, get + State). Напомним, что класс модели WeblinksModelWeblinks расширяет класс JModelList, а тот, в свою очередь, — класс JModel.

public function display($tpl = null) {
$this->state = $this->get('State');
$this->items = $this->get('Items');
$this->pagination = $this->get('Pagination');
// проверить ошибки
if (count($errors = $this->get('Errors'))) {
JError:-.raiseError (500, implode ("\n", $errors) ) ;
return false;
$this->addToolbar(); parent::display($tpl);

В данном случае метод getState () наследуется из класса JModel, тогда как методы getltems () и getPagination () — из класса JModelList. Метод getStateO возвращает объект состояния, который представляет текущее состояние экранной формы, включая действующие фильтры, номер страницы, порядок расположение элементов и пр. Метод getItems () возвращает перечень элементов веб-ссылок для отображения списком на экране. А метод getPagination () возвращает объект разбиения на страницы, служащий для указания номеров страниц на экране и поочередного перемещения по элементам на странице.

Получив из модели нужные сведения, можно проверить ошибки. Если таковые отсутствуют, вызывается метод addToolbar () для вывода на экран панели инструментов с пиктограммами New, Edit, Publish и т.д. Напомним, что панель инструментов берется из административного модуля mod_toolbar. Этот модуль служит для отображения глобального объекта панели инструментов. Метод addToolbar () создает пиктограммы панели инструментов в этом объекте, чтобы сделать их доступными для последующего отображения при воспроизведении модуля mod_toolbar в цикле выполнения команд.

Затем вызывается метод display () из родительского класса JView, находящегося в файле libraries/joomla/application/component/view.php. Ниже приведен исходный код этого метода.

function display($tpl  = null)
{
$result = $this->loadTemplate($tpl); if (JError::isError($result)) {
return $result; }
echo $result; }

В этом методе, в свою очередь, вызывается метод loadTemplate () из класса JView, а результат его выполнения сохраняется в переменной $ result. Затем выполняется команда echo языка РНР для отправки полученного результата браузеру. Как пояснялось в главе 3, когда выполняется компонент, выходной буфер уже активизирован с помощью функции ob_start () языка РНР. Поэтому когда выдается команда echo, результат выводится в выходной буфер, а не отправляется непосредственно в браузер.

В методе loadTemplate () проверяется наличие файлов замещения шаблонов и загружаются любые требующиеся файлы языковой поддержки. А в завершающей части данного метода выполняется приведенный ниже код, при условии, что обнаружен подходящий файл компоновки.

//  начать  вывод результатов  в  выходной буфер
ob_start ();
// включить  файл запрашиваемого шаблона в локальную область действия
//   (выполнить  для  этого логику представления)
include $this->_template;
//  завершить  действия  с запрашиваемым шаблоном;
//  получить  буфер и очистить  его
$this->_output = ob_get_contents();
ob_end_clean(); return  $this->  output;

Сначала функция obstart () активизирует вывод в выходной буфер, а затем включается файл компоновки шаблона. В данном случае это будет файл views/weblinks /tmpl/default.php. Если бы вместо исходного шаблона Bluestork использовался административный шаблон Hathor, то пришлось бы загрузить файл administrator/templates/ hathor/html/com_weblinks/weblinks/default.php, замещающий шаблон Hathor.

В данной компоновке класс не объявляется, и поэтому ее файл выполняется сразу, а результат, выводимый по команде echo, сохраняется в выходном буфере. Затем содержимое этого буфера копируется в поле $this->output, возвращаемое вызывающему методу (в переменной $result, как следует из предыдущего кодового блока).


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


Теги:
 
Похожие новости