Как запустить SQL-запрос из макета в компоненте Joomla - PullRequest
1 голос
/ 29 июля 2011

Я все еще учусь создавать компонент Joomla, но я столкнулся с ситуацией, на которую не могу найти ответ ни в одном учебнике или книге, которую я до сих пор читал.У меня есть модель (в models / weather.php), которая имеет метод getData ().Этот метод вызывается из View (в views / view.html.php), и он получает диапазон записей из моей базы данных.Этот диапазон записей затем повторяется в моем макете (views / tmpl / default.php) с использованием цикла foreach, что-то вроде этого:

if ($this->item) {
   foreach ($this->item as $item) {
      //...
   }
}

Что мне нужно сделать, это в точке комментария(// ...) Я хочу получить какую-то другую запись из другой таблицы, основываясь на значении $ item-> id.Мой вопрос: как мне сделать это в соответствии с лучшей практикой?Я полагаю, я мог бы просто открыть базу данных прямо здесь и получить нужные мне данные, но я подозреваю, что в программе на основе MVC мне нужно поместить этот запрос в функцию или метод?Куда мне положить это и как получить к нему доступ?Ссылка на пример была бы очень признательна.

ОТВЕТ: Я такой идиот.Очевидно, я могу просто вызвать любой метод из представления в моем макете, и в этом методе я могу получить доступ к моей модели (где я могу создать функцию поиска).Иногда мой разум (все еще) слишком процедурный, чтобы просто «видеть» ООП.

Ответы [ 2 ]

0 голосов
/ 29 июля 2011

Это плохая практика для обработки данных в макете (default.php). Макет должен отображать только извлеченные и обработанные данные из модели через представление (view.html.php). Почему бы вам не добавить другой метод в вашу модель и не вызвать этот метод из getData? Это было бы намного лучше.

0 голосов
/ 29 июля 2011

вы можете написать метод в вашей другой модели, откуда вы хотите получить данные, такие как getMyItem ().Тогда, по вашему мнению, вам нужно получить модель, подобную

   $model = & JModel::getInstance('ModelName','ComponentNameModel'); //it will look for ComponentNameModelModelName

   $myitem = $model->getMyItem($item->id);

Напишите логику, чтобы получить Myitem в методе модели

...