Писать блог - замечательная идея. Я только что встал с постели и сразу же захотелось разобрать JView, а ведь раньше бы я полдня занимался бы своими делами.
Итак, начнём с простейшего примера:
<?php
jimport( 'joomla.application.component.view');
class HelloViewHello extends JView
{
function display ($tpl = null)
{
$greeting = "Hello World!";
$this- >assignRef( 'greeting', $greeting);
parent::display ($tpl);
}
}
?>
Т.к. приложение простое, то оно и не использует моделей(обычный HelloWorld). С помощью метода AssignRef переменная передаётся шаблону. А parent::display($tpl) вызывает шаблон.. Если $tpl == null, то вызывается шаблон по умолчанию.
Шаблон представляет из себя обычный html-php файл, который лежит по адресам
/components/com_yourcomponent/views/tmpl/default.php
/administrator/components/com_yourcomponent/views/tmpl/default.php - стандартный шаблон
Шаблоны могут называться по-разному(не только default). Рассмотрим самый простой шаблон, чтобы в этой статье на них больше не заострять внимания:
defined('_JEXEC) or die('Restricted access'); ?>
<h1><?php echo $this ->greeting; ?></h1>
Как видите, он просто обращается к переменной представления, которая была объявлена в методе display(), и выводит эту переменную. Опять же ничего сложного, главное понять архитектуру.
Остаётся вопрос, как же представление взаимодействует с моделью. Далее приведу простейший пример, опять же из Хаген Графа, который поможет разобраться:
<?php
jimport( 'joomla.application.component.view');
class AutoViewAuto extends JView
{
function display($tpl = null)
{
$model = &$this- >getModel();
$rows = $model ->getAutoList();
$this- >assignRef('rows' , $rows);
parent::display($tpl);
}
}
?>
Опять видим функцию display. вот тут мы и получаем ссылку на модель, далее вызываем какую-либо функцию из этой модели. Функция(у нас это getAutoList()) должна возвращать данные(в нашем случае массив) . далее присваиваем переменные и отображаем.
Да писать блог, да ещё и полезный, - это прекрасно. Весьма благодарен автору.
ОтветитьУдалитьЯ уже несколько дней не могу зафиксировать в голове как происходит работа этой концепции MVC в Joomla. Да есть модель, контроллер, представление, но как именно это всё работает. Как выглядит цепочка обработки информации? где находятся операторы исполняющие команды?.. нигде не могу найти ответы на эти вопросы.
Если автор опишет эти вопросы, то очень поможет таким как я)