Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Samouchitel_po_razrabotke_rasshireny_dlya_Jooml....docx
Скачиваний:
3
Добавлен:
10.11.2018
Размер:
2.53 Mб
Скачать

Модель, Вид, Контроллер: Почему?

Пока что в нашем Компоненте хорошо отделяется выходной HTML-код от всего остального, что позволяет относительно просто вернуться назад и, к примеру, изменить стиль. Мы и дальше будем работать в этом направлении и сделаем его еще более гибким. Вместо текущего плоского списка для показа Обзоров, мы могли бы создать представления (Виды), которые позволили бы выводить столбцы с различной степенью детализации. Такие варианты могли бы быть доступны администраторам, которые могли бы выбрать нужный режим [Вид, Отображение. прим.переводчика].

Для этого мы будем изменять Компоненты для соответствия их архитектуре Модель, Вид, Контроллер (Model, View, Controller - MVC). Многие программисты используют MVC как предсказуемый способ управления логикой в программном обеспечении.

Модели используются для выбора различных вариантов доступа к данным.

Виды - генерируют отображение полученных данных.

Контроллеры получают команды и направляют (переключают) программное обеспечение для соответствующих задач и Видов

В нашей реализации MVC, мы будем создавать модели данных для представления информации из БД, Виды для отображения наших данных и Контроллеры, которые будут объединять их (Модели и Виды) и обрабатывать любые другие задачи

Построение Модели данных

Прежде чем разделить Виды, мы должны построить несколько моделей данных, которые будут получать информацию которую мы будем показывать. Часть Компонента в ИП состоит из двух основных Видов: тот, что отображает все Обзоры и тот, что отображает один Обзор. Им обоим понадобится, по крайней мере, одна модель

Модель Все Обзоры

В каталоге /components/com_reviews, создайте папку с именем models. В этой папке создайте файл all.php и добавьте в него такой код:

<?php

defined( '_JEXEC' ) or die( 'Restricted access' );

jimport( 'joomla.application.component.model' );

class ModelReviewsAll extends JModel

{

var $_reviews = null;

function getList()

{

if(!$this->_reviews)

{

$query = "SELECT * FROM #__reviews WHERE published = '1'";

$this->_reviews = $this->_getList($query, 0, 0);

}

return $this->_reviews;

}

}

?>

Во-первых, мы импортируем библиотеки модели данных Joomla!. Далее, мы объявляем ModelReviewsAll как расширение JModel. Обратите внимание на название: Model, затем имя Компонента, за которым следует название модели. Следуя такому соглашению, облегчается ссылка на эту модель для других Компонентов. Мы объявляем переменную $_reviews внутри класса, нижнее подчеркивание напоминает нам, что это защищенная переменная. Единственная функция GetList() проверяет загружен ли список Обзоров. Если нет, мы строим запрос, чтобы получить все опубликованные Обзоры и отправить их через JModel функцию _getList(). Как только в $_reviews загружаются строки, мы возвращаем ее

Почему второй и третий параметры _getList() установлены в 0?

Второй и третий параметры для _getList() это начальная строка и их количество (limit). Если бы мы хотели получить строки с 20 по 50, то установили бы второй и третий параметры в 20 и 30 соответственно. В противном случае, _getList() интерпретирует два нуля, как получить все строки.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]