Реализация простого плагина: различия между версиями

Материал из GLENN CMS WIKI
Перейти к навигации Перейти к поиску
Нет описания правки
Нет описания правки
 
(не показаны 4 промежуточные версии этого же участника)
Строка 1: Строка 1:
==Создание плагина==
===Основные понятия===
создадим к примеру плагин  job
создадим к примеру плагин  job


Строка 4: Строка 6:
/site/plugins/job
/site/plugins/job


создадим IndexController для отображения чего нибудь
создадим [[контроллер]] IndexController для отображения чего нибудь
помещаем его в /site/plugins/job/controllers/IndexController.php
помещаем его в /site/plugins/job/controllers/IndexController.php


Строка 13: Строка 15:




создадим в нём также indexAction
создадим в нём также [[экшн]] indexAction




Строка 21: Строка 23:
  }
  }


===Вывод содержимого на экран===
Для вывода переменных на экран(в область Smarty) в контроллере есть объект $this->smarty, который является прокладкой между зендом и смарти
Он поддерживает все методы Smarty и реализует некоторые свои


в indexAction делаем все необходимые манипуляции
в indexAction делаем все необходимые манипуляции
Строка 55: Строка 62:
===Работа с БД===
===Работа с БД===


Работа с БД в плагинах осуществляется через классы моделей
Работа с БД в плагинах осуществляется через классы [[Модель|моделей]]


для инициализации модели используется метод initModel()
для инициализации модели используется метод [[Контроллеры#Полезные методы|initModel()]]




Строка 70: Строка 77:




сами модели хранятся в папке models, плагина
сами [[Модель|модели]] хранятся в папке models, плагина


в нашем случае это /site/plugins/job/models/jobModel.php
в нашем случае это /site/plugins/job/models/jobModel.php




класс модели обязательно должен быть наследован от [[DbModel]]
класс модели обязательно должен быть наследован от [[Модель|DbModel]]





Текущая версия от 15:16, 6 марта 2013

Создание плагина

Основные понятия

создадим к примеру плагин job

создадим для него папку /site/plugins/job

создадим контроллер IndexController для отображения чего нибудь помещаем его в /site/plugins/job/controllers/IndexController.php

Класс IndexController должен быть объявлен как

class Job_IndexController extends SiteBaseController {
}


создадим в нём также экшн indexAction


class Job_IndexController extends SiteBaseController {
         function indexAction() {
         }
}


Вывод содержимого на экран

Для вывода переменных на экран(в область Smarty) в контроллере есть объект $this->smarty, который является прокладкой между зендом и смарти Он поддерживает все методы Smarty и реализует некоторые свои

в indexAction делаем все необходимые манипуляции


class Job_IndexController extends SiteBaseController {
         function indexAction() {
             $x = 2;
             $y = 2;
             $this->view->z = $x*$y;     /////// передаём переменную Z в область smarty
         }
}


у текущего скина в области контента вызывается функция site::getContent()

которая автоматом подгружает TPL

с контентом

т.е. в нашем случае это будет /site/plugins/job/views/content/index/index.tpl
job в пути это имя плагина
index - имя контроллера 
index - имя экшна

создаём файл /site/plugins/job/views/content/index/index.tpl

и пишем в нём: {$z}

Вуаля! при входе на страницу /job/index/index мы увидим "4" в области контента


Работа с БД

Работа с БД в плагинах осуществляется через классы моделей

для инициализации модели используется метод initModel()


class Job_IndexController extends SiteBaseController {
         function initModel() {
             $this->model = new jobModel();
         }
         function indexAction() {
             $this->view->z = $this->model->getZ();     /////// передаём переменную Z в область smarty
         }
}


сами модели хранятся в папке models, плагина

в нашем случае это /site/plugins/job/models/jobModel.php


класс модели обязательно должен быть наследован от DbModel


 class jobModel extends DbModel {
        function getZ(){
             return $this->s_fetchOne('select Z from X');
        }
 }